Umgang mit Iteratoren und Zeigern
-
Hallo,
ich habe eine Frage zu Iteratoren des Containers <vector>.
Hierzu seien z.B. folgende Definitionen vorausgesetzt:vector<TYP> vec;
vector<TYP>::iterator vec_iter;
TYP *tp;Der Zeiger tp zeige nun auf ein belieb. Element des Vektors vec.
Mit welcher Methode kann ich nun den Iterator vec_iter genau auf dieses
Element zeigen lassen?
(Ich arbeite mit dem aktuellen GNU g++ Compiler).Für eine Antwort auf obige Frage wäre ich sehr dankbar!
-
Wahrscheinlich sowas:
tp = &(*vec_iter);
-
Am sichersten so:
vec_iter=find(vec.begin(), vec.end(),*tp);Da die Container Kopien der eingefügten Elemete anfertigen, wirst du wahrscheinlich keinen Zeiger auf das tatsächliche Element im Container haben (vermute ich)
Nid
-
Besten Dank für die rasche Rückmeldung!!
Leider funktioniert
tp = &(*vec_iter);
nicht, an das dachte ich auch zuerst.
Bei
vector<TYP>::iterator vec_iter(&(*vec_iter));
bekomme ich keine Fehlermeldung!
Kann ich dann mit
vec.erase(vec_iter)
dennoch ein Element löschen?
-
victim49 schrieb:
Kann ich dann mit
vec.erase(vec_iter)
dennoch ein Element löschen?
Ja, wenn es kein konstanter Vektor ist, kein Problem, allerdings:
- Vorher prüfen, ob der Iterator nicht vec.end() ist, weil das Element nicht gefunden wurde.
- Zwischen der Ermittlung des Iterators und dem Löschen keine anderen Umstrukturierungsmaßnahmen des Vektors vornehmen, da der Iterator sonst ungültig wird.
Nid
-
Scheint zu klappen.

Noch mal besten Dank für die Hilfe !!!!!!!