Zugriff STL von list auf list
-
Ich mag ja gar nicht fragen, aber ich komme schon wieder nicht zu Rande.
ichhabe folgende Struktur und typdefs:struct sSection { int SectionNumber; int NumberOfChoices; list<int> ChoiceList; list<string> SectionText; };
typedef list<sSection*> SectionList;
typedef SectionList::iterator SectionListIter;daraus habe ich mir eine Liste gemacht:
SectionList MainList; SectionListIter MainIter = MainList.begin();
Mein Problem liegt da, daß ich nicht weiß, wie ich jetzt an
die Liste innerhalb der Struktur komme. Ich muß nämlich die
"innere" liste nach einem bestimmten Wert durchlaufen. Wenn
dieser gefunden wist, will ich nur ein Flag setzen.
Ich komme dabei immer mit der Syntax durcheinander.
Wie stelle ich das vernünftig an?
-
Nun, du hast eine Liste mit Zeigern auf den Struct.
Ein Iterator zeigt wiederum auf einen der Zeiger.it = liste.begin();
An den Zeiger auf sSection kommst du jetzt mit *it. An die einzelnen Elemente des structs dann also mit:
(*it)->SectionNumber; usw...
-
Mir macht allerdings der nächste Schritt dazu Probleme. Wie kann ich von diesem Punkt aus die innere Liste durchlaufen?
Ich hatte mir gedacht, daß ich dafür einen Iterator brauche und diesen an den Anfang setze:typedef list<int*>::iterator test;
test iter;
iter = (*MainIter)->ChoiceList.begin();Was mache ich falsch?
-
ChoiceList ist keine list<int*>. Der Typ des Iterators passt nicht.
-
muß es ein list<int> sein? (Zumindest funktioniert das halbwegs.)
Warum paßt ein list<int*> nicht?
Für sSection benutze ich dich doch auch ein list<sSection*>. Liegt das daran, daß sSection mehrere members hat und int ein Grundtyp ist?Nehme ich an, daß ich ein list<int> habe. Wie erhalte ich Zugriff auf eine bestimmte Stelle in dieser Liste? Ich bekomme immer Fehlermeldungen, daß der linke Teil eine Klasse sein muß.
mfg
Sönke
-
Soenke schrieb:
muß es ein list<int> sein? (Zumindest funktioniert das halbwegs.)
Warum paßt ein list<int*> nicht?Weil du selbst ChoiceList als list<int> deklariert hast.
Nehme ich an, daß ich ein list<int> habe. Wie erhalte ich Zugriff auf eine bestimmte Stelle in dieser Liste?
Du brauchst einen list<int>::iterator, der auf die Stelle zeigt. Den kannst du dann dereferenzieren, dann hast du deinen int.
-
jupieh, Programm funktioniert endlich. Was für eine Geburt... ich möchte keine Frau sein, die kriegen sogar Kinder
vielen Dank dafür, daß du dich mit meinen Fragen herum geschlagen hast.
@andere nochmals danke, so langsam komme ich in die STL rein