PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: list<eigene Structur>


Gast
2006-01-21, 18:15:36
Hi.

Ich habe folgendes Struct in einer list gebastelt:


struct struc_string_strlist {
string name;
list<string> waren;
};

typedef list<struc_str_strlist> type_einkaufszettelliste;

type_einkaufszettelliste myZettelwirtschaft;


Einfügen kann ich einen Einkaufszettel problemlos:

struc_string_strlist einkaufszettel1, einkaufszettel2;
einkaufzettel1.name="Montag";
einkaufszettel1.waren.push_back("Limo");
...
...
myZettelwirtschaft.push_back(einkaufszettel1);
myZettelwirtschaft.push_back(einkaufszettel2);


Wenn ich nun aber mit myZettelwirtschaft.end() auf das letzte Element zugreifen möchte, dann gibt es diese Fehlermeldung, die mir nicht viel hilft:
Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'std::list<_Ty>::iterator' akzeptiert (oder keine geeignete Konvertierung möglich)

Kann mir jemand sagen, wie ich auf Elemente der Liste zugreifen kann, die ich so problemlos füllen konnte?

Coda
2006-01-21, 18:30:56
.end() gibt einen Iterator hinter das letzte Element zurück. Was du willst ist .back()

Expandable
2006-01-21, 23:14:59
Wie Coda schon sagte, end liefert einen Iterator, und für Iteratoren ist der <<-Operator nicht definiert (vermutlich wolltest Du das letzte Element mit cout << x.end() ausgeben, oder?)

zeckensack
2006-01-22, 01:57:37
cout << myZettelwirtschaft.back()->name;

Gast
2006-01-22, 17:59:23
Danke! *zecke in die backe zwack* =)

muhkuh_rs
2006-01-24, 10:07:51
Falls Du es noch nicht selbst korrigiert hast:

cout << myZettelwirtschaft.back().name;

Die front() und back() Memberfunktionen liefern Referenzen auf das erste bzw. letzte Element eines Containers, begin() und end() Iteratoren auf das erste Element und das Element anch dem letzten. Iteratoren kann man unter anderem (fast) wie normale Zeiger auf die Listenelemente benutzen.