Gültigkeit von Iteratoren auf STL-Listen
-
Hallo zusamms,
ich habe eine Frage, die bereits in dieser News-Group gestellt und beantwortet wurde:
http://groups.google.de/groups?hl=de&lr=&threadm=m3d88kw1yd.fsf%40skywalker.grs.de&rnum=3&prev=/groups%3Fq%3Dc%252B%252B%2Blist%2Bvalidity%26hl%3Dde%26lr%3D%26selm%3Dm3d88kw1yd.fsf%2540skywalker.grs.de%26rnum%3D3Es geht darum, dass ich eine STL-Liste mit push_back fülle und mir bestimmte Elemente (wärend des Füllens) mit Hilfe eines Iterators merken möchte. Die Frage ist nun, was mit den Iteratoren passiert, wenn ich weitere Elemente mit push_back an die Liste Anhänge.
Nach der Antwort in der News-Group bleibt der Iterator im Falle einer Liste gültig, das entspricht auch dem experimentellen Beobachtung mit der GCC-STL Implementierung.
Meine Frage ist nun, ob das wirklich das Verhalten ist, das für die STL vorgesehen ist, oder ist das nur ein Feature der speziellen GCC-Implementierung. Für mich ist diese Frage interessant, da mein Stück Software auch auf HP- und Windows- Systemen laufen (und funktionieren) sollte.
Lieben Gruß,
Joe.
-
der standard schreibt das soweit ich weis vor, dass ein iterator auf ein element solange gültig bleibt, bis das element selber gelöscht wird.
-
Scott Meyers schrieb:
Do you need to minimize iterator, pointer, and reference invalidation?
If so, you'll want to use node-based containers, because insertions and
erasures on such containers never invalidate iterators, pointers, or
references (unless they point to an element you are erasing). In general,
insertions or erasures on contiguous-memory containers may invalidate all
iterators, pointers, and ref-erences into the container.Was ja auch ne gewisse Logik (für mich) hat.