c++ unordered_map von Vektoren
Also konzeptionell ist ich bin versuchen, um einen hash von arrays von Zeigern auf mein Objekt.
Die Raute-Taste ist ein " int " für die Art des Objekts, und das array ist eine Liste der Objekte zu Rendern.
Was ich versuche zu tun ist :
unordered_map<int, vector<Object*> > drawQueue;
drawQueue.clear(); //new empty draw queue
for ( ... ) {
drawQueue.at(type).push_back(my_obj);
}
So, ich bin nicht vertraut genug mit den Feinheiten des STL-Sachen, da bekomme ich auch eine exception zu sagen out_of_bounds, was passiert, wenn der Schlüssel nicht vorhanden.
Also dachte ich, ich muss eine Taste zuerst, und dann fügen Sie die Vektor :
if (drawQueue.count(type)) {
//key already exists
drawQueue.at(type).push_back(my_obj);
} else {
//key doesn't exist
drawQueue.insert(type, vector<Object*>); //problem here
drawQueue.at(type).push_back(my_obj);
}
Aber jetzt bin ich wirklich verloren, da ich nicht weiß, wie man erstellen/initialisieren/was auch immer eine leere vector
dem einfügen der unordered_map
...
Oder mache ich das den völlig falschen Weg?
Hinweise kluge Völker?
Akzeptieren die Antwort, es ist nützlich.
InformationsquelleAutor user1463416 | 2012-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie nicht mit
insert
in der richtigen Weise. Sollte dies funktionieren:Wenn Sie mit C++11, die Vorherige Anweisung kann vereinfacht werden zu:
Durch die Nutzung dieser Ansatz das element ist gebaut in-place (d.h., kein kopieren oder verschieben von Operationen durchgeführt werden).
Ich auch links, um die Dokumentation für
insert
undemplace
.drawQueue.emplace(type);
.Es funktioniert bei mir nicht mit GCC-4.6 (mit
-std=c++0x
). Welche compiler verwenden Sie?Ich habe versucht mit GCC 4.7 und es hat geklappt 🙂 ich update meine Antwort, dass Sie diese Möglichkeit.
InformationsquelleAutor betabandido
Ich denke, dies ist ein einfacher Ansatz. Mein Beispiel wird eine unordered_map string als Schlüssel und integer-Vektor der Werte.
InformationsquelleAutor Venkata Gogu