Erstmal tolles Forum hier mit jeder menge nette leute hier. Hat mit schon viel weitergeholfen. Dafür erstmal Vielen Dank !
Nun zu meiner eigentlichen Frage:
Ich habe eine Doppelt verkette Liste, in der ich der Mitte ein Element ausgeben möchte. Meine erster Anlauf das ganze über einen Iteror zu machen hat nicht funktioniert. Irgendwie konnte ich den Zeiger nicht derefenzieren. Kennt jemand eine andere Möglichkeit ?
Allerdings - wenn du random access brauchst und trotzdem in (meistens) konstanter Zeit am Anfang und Ende einfügen können willst, bietet sich std::deque an:
Ich hätte nochmal eine kurze Frage zu den doppelt verketteten listen.
Wie müsste ich bei der oben gestellten Frage vorgehen, wenn die Liste aus Objekten bestehen würde ? In meinem Fall besteht ein Objekt aus einer Zahl und einem Zeichen.
Kann ich den Iteraotor direkt auf eine der Zahlen oder Zeichen zeigen lassen und dann dereferenzieren ?
Du kannst natürlich auch einen Zeiger auf die Elemente nehmen, etwa
C++:
int *p = &it->zahl;
oder einen Memberzeiger benutzen:
C++:
int object::*mp = &object::zahl;
// ... it->*mp; // entspricht it->zahl
oder einen Wrappertyp um den Iterator schreiben, der den Werttyp auf zahl mappt (das darfste aber selbst machen). Üblicherweise reicht es aber, den ganzen Aufriss sein zu lassen und it->zahl direkt zu benutzen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
Aber ein Frage hätte ich trotzdem noch. Wenn ich in einer Liste die wie oben aus Objekten befüllt ist ein Element abändern möchte z.B eine Zahl. Gibt es dann ein Möglichkeit dies über einen Iterator zu machen ? Oder muss ich dafür das komplette Objekt aus der Liste entfernen und dann das abgeänderte einfügen ?
Du musst halt nur darauf achten, dass du dafür einen container::iterator und keinen container::const_iterator benutzt. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe DijkstraDieser Post wurde am 22.06.2010 um 18:16 Uhr von 0xdeadbeef editiert.