STL unordered_map und structure wie die Values erhalten?
-
Mit folgendem Code kann ich alle Elemente in meiner unordered_map mit ihrer Nummer erhalten, wie erhalte ich jedoch die Values der Structure also z.B.: x oder y? Vielen Dank für eure Antworten.
typedef struct
{
int x;
int y;
} mystruct;unordered_map<int, vector<mystruct> > xy
unordered_map<int, vector<mystruct> > ::iterator it;
for(it = xy.begin();it1 != xy.end();it++) {
cout << xy[it->first] << endl;
}
-
Ich verstehe leider die Frage nicht. Was heißt "erhalten" genau in diesem Kontext?
Und warum scheibst Du
xy[it->first]stattit->second?
-
In Deinem Beispielcode iterierst Du doch schon über die Elemente. Da brauchst Du nicht mehr den Zugriffsoperator [] zu nutzen. Auf Deinen Vektor kannst Du mit it->second zugreifen und auf die Elemente des Vektors dann mit dem Zugriffsoperator.
Ich habe mal Deinen Code entsprechend angepasst:
typedef struct { int x; int y; } mystruct; unordered_map<int, vector<mystruct> > xy unordered_map<int, vector<mystruct> > ::iterator it; // Annahme, dass der Vektor mindestens 6 Elemente hat. int vector_index = 5; for(it = xy.begin();it != xy.end();++it) { // Zugriff auf Schlüssel cout << it->first << endl; // Zugriff auf Wert (Vektor) und 5. Element im Vektor cout << it->second[vector_index].x << endl; cout << it->second[vector_index].y << endl; }Ich hoffe, das hilft!
Gruß,
zussel
-
Müsste eher second sein.
Ich möchte alle Elemente Ausgeben:
Angenommen es gibt Element 4 und 5 in der map mit den Daten:
4 x=1 y=1
5 x=101 y=103
,dann soll mir das Prog. den wert für x von Element 4 ausgeben also:
x = 1 (als int)und auch für Element 5: ie. x=101
Als Anfänger weiß ich leider nicht wie ich das erreiche.
-
Das funktioniert super, da hab ich doch glatt den Vektorindex vergessen. Aber die STL-Fehlermeldungen sind schon kryptisch.
Danke

-
Und weil du C++-Programmierer bist, darf es auch
struct mystruct { int x; int y; };heißen.