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] statt it->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.



  • @zussel

    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.


Anmelden zum Antworten