Map in Map speichern



  • huhu,wie der Titel vermuten lässt möchte ich eine Map in einer anderen Map speichern, in etwa so...

    class KlasseKlasse {

    public:
       ...
       ...
       ...
    
    };
    
    typedef map<uint32_t, KlasseKlasse*> Map_1;
    
    map<uint32_t, Map_1*> Map_2;
    

    insert hab ich dann wie folgt geregelt

    Map_1 MapVomTypMap_1;
    
    MapVomTypMap_1.insert(pair<uint32_t, KlasseKlasse*>(000000,new KlasseKlasse()));
    Map_2.insert(pair<uint32_t, Map_1>(zahl, MapVomTypMap_1));
    

    und jetzt kommts, die Ausgabe klappt noch nicht ganz 😉

    map<uint32_t, Map_1*>::iterator it_ausgabe = Map_2.begin();
    
    while(it_ausgabe != Map_2.end())
    {
       cout << it_ausgabe->first << endl; //geht, alle werte die drin sein sollen sind auch drin
       cout << it_ausgabe->second->first << endl; // geht nicht :(
       it_ausgabe++;
    }
    

    Fehlermeldung

    Trace_Reader.cpp:630:35: Fehler: Basisoperand von »->« hat Nicht-Zeiger-Typ »std::map<unsigned int, FunctionSummary*>«

    hab schon enn bisschen probiert und gesucht bevor ich hier schreibe, die Fragen zur Thematik:

    1. Geht das mit dem einfügen auch einfacher, sieht nicht so schön aus?
    2. funktioniert das so überhaupt?

    LG nippler 🙂



  • for(map<uint32_t, Map_1*>::iterator it_ausgabe = Map_2.begin(); it_ausgabe != Map_2.end(); ++it_ausgabe)
    {
       cout << it_ausgabe->first << endl << endl; // Gibt den Schlüssel der äußeren Map zurück.
    
       // Iteriert über die innere Map.
       for(Map_1::iterator it_innere_map = it_ausgabe->second->begin(); it_innere_map != it_ausgabe->second->end(); ++it_innere_map)
       {
          cout << it_innere_map->first << endl;
          cout << it_innere_map->second<< endl;
       }
    
       cout << endl << endl;
    }
    

    Du hattest einen kleinen Denkfehler. it_ausgabe->second ist vom Typ Map_1* , nicht Map_1::iterator . Deshalb geht das nicht.
    So sollte es gehen!


Anmelden zum Antworten