Wie aktualisiere ich den Wert eines Schlüssels std::map
nach Verwendung der find
Methode?
Ich habe eine Map- und Iterator-Deklaration wie folgt:
map <char, int> m1;
map <char, int>::iterator m1_it;
typedef pair <char, int> count_pair;
Ich verwende die Karte, um die Anzahl der Vorkommen eines Charakters zu speichern.
Ich verwende Visual C ++ 2010.
map
Dokumentation finden Sie die verschiedenen Funktionen vonmap
.error: assignment of member 'std::pair<char* const, char*>::second' in read-only object
:(Ich würde den Operator [] verwenden.
Mit dieser Technik wird es wirklich einfach, alle Zeichen aus einem Stream zu lesen und zu zählen:
quelle
[]
verwendenfind
(ich glaube nicht, dass dies Ihre Absicht war).end()
Iterators ist ein undefiniertes Verhalten, das nicht generiert werden mussSIGSEGV
(und meiner Erfahrung nach ist dies unwahrscheinlich).Sie können
std::map::at
die Elementfunktion verwenden. Sie gibt einen Verweis auf den zugeordneten Wert des mit dem Schlüssel k identifizierten Elements zurück.quelle
Wenn Sie den Schlüssel bereits kennen, können Sie den Wert an diesem Schlüssel direkt mit aktualisieren
m[key] = new_value
Hier ist ein Beispielcode, der helfen könnte:
quelle
Sie können auch so tun-
quelle
Sie können den Wert wie folgt aktualisieren
quelle