Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wie vorheriges Element mit einem std::list<T>::iterator holen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.12.2008, 13:49 Uhr
~Seikilos
Gast


Ich habe den folgenden Code


C++:
for(std::list<foo>::iterator iter = foos.begin(); iter!= foos.end(); ++iter)
{
  // Benötige das foo vor dem aktuellen iter
  foo * meinfoo = &*iter-1;
}



Dies liefert mir keine Fehlermeldung, aber ich bin gerade überhaupt nicht sicher, ob das so funktioniert?
Kann ich so den Vorgänger aus einer list bekommen? Eigentlich ja nicht, weil die double linked sind, richtig? wie bekommeich dann den vorgänger? list hat ja keinen [] accessor.

Und es muss eine liste sein, weil ich gewährleisten muss, dass die Adresse eines elements immer gleich bleibt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.12.2008, 14:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
foo * meinfoo = & *(iter-1);



sollte eigentlich gehen. Nur vorsicht: wenn du was einfügst oder löscht aus der liste, kanns sein das dein "meinfoo" dann ins nirvana zeigt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2008, 17:24 Uhr
0xdeadbeef
Gott
(Operator)


Vorsicht. std::list::iterator erfüllt das RandomAccessIterator-Konzept nicht, iter - 1 muss also nicht kompilieren (und wird es in der Regel auch nicht). Außerdem gibt es gleich im ersten Schleifendurchlauf kein vorheriges Element.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: