Ich erstelle eine Karte, um zu vergleichen, ob alle Buchstaben eines Wortes eindeutig sind oder nicht. Wenn ich diese Map erstelle, speichere ich den Wert 1 für das entsprechende Zeichen. Problem ist, wenn ich die Werte der Karte von den Zeichentasten drucke, empfange ich nur Nullen für alle Werte.Wie ändert man den Standard-Integer-Wert in einer Karte?
Bei dem Versuch, dies zu recherchieren, hatte mir jemand gesagt, dass dies aufgrund aller Werte der Karte standardmäßig auf Null gesetzt ist und meine ganze Zahl initialisiert werden muss, damit sie sich ändert. Ich bin nicht ganz klar darüber, was sie mit dem Integer gemeint haben, muss initialisiert werden, weil ich in der Lage sein sollte, einen Literal-Integer-Wert zu übergeben, richtig?
Im Folgenden ist der Code, den ich zur Zeit habe, wie ich Sie in 1 für die Zeichen des Wortes und mein Code überprüft, um zu sehen, passieren bin versucht werden sehen, ob das Zeichen in der Karte ist bereits vorhanden:
#include <iostream>
#include <map>
using namespace std;
bool unique(char const* word)
{
map<char,int> cmpr;
for(int i =0; word[i]!='\0';i++)
{
if(cmpr[word[i]])
{
cout<<"Not all unique";
return false;
}
else
{
cmpr.insert(pair<char,int>(word[i],1));
}
cout<<cmpr[char(word[i])];
}
for(map<char,int>::iterator it = cmpr.begin(); it != cmpr.end();it++)
{
cout<<it->first<<" and "<<it->second<<endl;
}
return true;
}
int main()
{
unique("hello");
}
und meine Ausgabeergebnisse in (wenn sie versuchen, ersten und zweiten Wert von Karten Knoten drucken):
e and 0
h and 0
l and 0
o and 0
Bevorzugen Sie 'std :: string' und nicht Zeichen Array-Zeiger. Ein häufiges Problem bei Zeichenarrays besteht darin, die Zeiger zum Sortieren nicht mit der Zielzeichenfolge zu vergleichen. –
Wenn Sie eine 'map' suchen, verwenden Sie' find' statt '[]'. Der 'find' wird keinen neuen Schlüssel einfügen. –