Ich habe eine std::vector<MyString>
welche Daten nicht eindeutig sind. Tatsächlich werden die meisten Strings wiederholt. Und ich muss die einzigartigen und ihre Wiederholungszahl finden.Wie werden neue std :: map-Einträge nur durch Schlüsseleinfügung initialisiert?
Ich benutze Karte:
std::map<MyString,unsigned short> stringsMap;
.......
if (stringsMap.find(currentString) == stringsMap.end())
{
stringsMap[ currentString ] = 0;
}
stringsMap[ currentString ]++;
........
Haben Sie Ideen haben, wie es auf weniger Zeilen getan werden könnte?
Es könnte in einer Zeile getan werden: stringsMap[ currentString ]++;
jedoch kurze hat unbestimmten Wert standardmäßig.
Der Anfangswert nicht unbestimmt ist. Es ist 0. ['operator []'] (http://en.cppreference.com/w/cpp/container/map/operator_at) value-initialisiert den Wert eines fehlenden Schlüssels. –
Kannst du mir eine Bestätigung geben? –
Einfach die gesamte "if" -Anweisung loswerden. Wenn '[currentString]' noch nicht existiert, wird es hinzugefügt und sein Wert auf 0 initialisiert, bevor dann operator ++ 'darauf angewendet wird. –