So weit ich verstehe, die Boost: unordered_map und std :: unordered_map funktionieren die gleichen in Bezug auf "Überlauf" (aka mehrere Dinge, die mit dem gleichen Schlüssel eingefügt werden). Sie speichern es in einem "Eimer", so dass Sie dann über sie iterieren können.Cant interrate durch Überlauf in einer unorderd Karte
Zum Beispiel:
key: data:
"apple" 2
"peach" 4
"apple" 3
"peach" 8
dann der Eimer für "apple" enthalten würde 2 & 3, nicht wahr?
Nun, ich habe Probleme mit diesen Dingen.
Hier ist mein Code:
#define ANZ 10
typedef boost::unordered_map<uint16_t, int> uuidMap_int;
using namespace std;
int main()
{
uuidMap_int uuidMap;
boost::uuids::uuid entity1;
boost::uuids::uuid entity2;
for(unsigned int i = 0;i<ANZ;i++)
uuidMap.insert(std::pair<int,int>((i<5?0:1),i));
for(unsigned int i = 0;i < uuidMap.bucket_count();i++){
for(uuidMap_int::local_iterator it = uuidMap.begin(i); it != uuidMap.end(i);++it){
std::cout<<it->first<<"|"<<it->second<<"\n";
}
}
return 0;
}
Alles, was es tut, ist zwei neue Einträge in der Karte zu machen und sie zu füllen. Hier ist, wie die Ausgabe aussehen soll:
0|0
0|1
0|2
.
.
.
1|5
1|6
.
.
.
1|10
Aber es sieht wirklich wie diese
0|0
1|5
Nun ich weiß nicht, warum dies geschieht. Es scheint, als ob der "Überlauf" einfach verwüstet wird. Ich versuche jedoch, so etwas wie eine kleine Datenbank zu machen, also brauche ich eine Möglichkeit, eine ID und eine Menge von Daten, die zu dieser ID gehören, in einer Karte wie dieser zu haben.
Was mache ich falsch/welche andere Karte erlaubt mir, so zu arbeiten, wie ich möchte?
Was passiert, ist Ihr Verständnis ist falsch. Ansonsten tust du nichts falsches. – juanchopanza
@juanchopanza, um zu erklären, wo ich falsch liege oder wirst du mich einfach hier hängen lassen? – MoustacheSpy
Vielleicht lesen Sie dies: http://en.cppreference.com/w/cpp/container/unordered_map. 'unordered_map' enthält Schlüssel-Wert-Paare. Was Sie wahrscheinlich brauchen, ist ['std :: unordered_multimap'] (http://en.cppreference.com/w/cpp/container/unordered_multimap). – juanchopanza