std::unordered_map und doppelte Schlüssel
Bin ich mit einer stl-unordered_map, und ich kann nicht scheinen, um die Methode der Zählung zu arbeiten.
Das ist mein Programm:
typedef unordered_map<char, int> Mymap;
int main()
{
Mymap m;
m.insert(Mymap::value_type('a', 1));
m.insert(Mymap::value_type('b', 2));
m.insert(Mymap::value_type('c', 3));
m.insert(Mymap::value_type('b', 4));
m.insert(Mymap::value_type('b', 5));
cout << m.count('b') << endl;
return 0;
}
In der Dokumentation für unordered_map sagt, dass unordered_map::count(const Key& k)
gibt die Anzahl der Elemente mit dem Schlüssel k
.
Also ich würde erwarten, dass die Ausgabe hier zu sein 3
, in der Erwägung, dass der Reale Ausgang ist 1
. Warum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer
unordered_map
unterhält eine 1:1-Zuordnung von Schlüssel und Wert, socount
immer wieder null oder eins.Benötigen Sie eine
unordered_multimap
wenn Sie wollen, um die Abbildung mehrerer Werte auf einen einzelnen Schlüssel.find(...) != end()
?count()
ist irreführend.exists()
wäre besser.count()
ist Teil der Schnittstelle, die für alle assoziativen Container.map
ist ein einzigartige assoziative container som.count()
liefert entweder 0 oder 1. Aber für einen assoziativen container im Allgemeinen wie multiset, multimap es zurückgeben kann Werte größer als 1.- Ausgang