STL und 2 vector<...> Container

abandit

Grünschnabel
STL und 2 list<...> Container

Hallo an alle c++ Profis,
ich habe da ein Problem mit 2 Listen der STL.
Die Problematik habe ich unten mal beschrieben.
Ich hoffe jemand kann mir weiterhelfen, den am Donnerstag schreibe ich Klausur... :(

Wenn ich z.B. eine Klasse "my_class" habe, welche z.B. ein "list<int>
my_list_nr1" Objekt enthält und eine Reihe anderer Variablen (z.B.
int, string, usw.).
Objekte dieser Klasse "my_class" wiederum werden in einer weiteren
Liste "list<my_clsss> my_list_nr2" gespeichert.
Wie greife ich dann über einen Iterator auf die Liste "my_list_nr1"
zu?
Der Zugriff auf die Liste "my_list_nr2" habe ich verstanden, aber der
nicht den Zugriff auf die Liste "my_list_nr1", welche in der anderen
Liste "my_list_nr2" enthalten ist.

// Erste Klasse

class my_class {
int a;
int b;
...
list<int> my_list_nr1;
};

// Zweite Klasse

class andere_class {
int c;
int d;
...
list<my_class> my_list_nr2;
};


Ich hoffe ich konnte die Problematik verständlich erklären.
Wäre echt super, wenn mir jemand helfen könnte.
Ich bin schon am Verzweifeln.
Danke schon mal im Voraus,

abandit
 
Zuletzt bearbeitet:
Verwende das nächste mal bitte die Codetags des Forums....

Ansonsten:
Code:
#include <iostream>
#include <list>

using namespace std;

class my_class{

        private:
                int a;
                int b;
                list<int> my_list_nr1;

        public:
                //Rückgabewert als Referenz is wichtig um Liste verändern zu können
                list<int>& get_my_list_nr1(){ return my_list_nr1; } 
                
};

class andere_class {

        private:
                int c;
                int d;
                list<my_class*> my_list_nr2;

        public:
                andere_class(){

                        my_list_nr2.push_back(new my_class()); //in Liste aus andere_class was reintun
                        for(list<my_class*>::iterator pos = my_list_nr2.begin(); pos != my_list_nr2.end(); ++pos){
                                (*pos)->get_my_list_nr1().push_back(1); // in Liste von my_class was reintun
                                (*pos)->get_my_list_nr1().push_back(2); // in Liste von my_class was reintun
                        }
                     
                        //und glei wieder ausgeben

                        for(list<my_class*>::iterator pos = my_list_nr2.begin(); pos != my_list_nr2.end(); ++pos){
                                for(list<int>::iterator pos2 = (*pos)->get_my_list_nr1().begin(); pos2 != (*pos)->get_my_list_nr1().end(); ++pos2)
                                        cout << *pos2 << endl;
                        }

                }
                
                ~andere_class(){     
                        //Speicher wieder freigeben
                        for(list<my_class*>::iterator pos = my_list_nr2.begin(); pos != my_list_nr2.end(); ++pos){
                                if(*pos != NULL)
                                        delete *pos;
                        }
                }

};

int main(){

        andere_class andre;
}

Eigentlich alles dokumentiert, wenn du noch Fragen hast melde dich
nochmal.

Gruß

RedWing
 
Zurück