Elemente eines Vektors durch andere ersetzen
-
Hallo,
gibt es eine Möglichkeit, die Werte eines zusammenhängenden Teilbereichs eines Vektors effizient durch andere Werte zu ersetzen, wenn man Iteatoren hat, die auf den Anfang und das Ende dieses Bereiches zeigen? Also angenommen, ich habe einen Vektor mit 10 Elementen vom Typ T
T typ; std::vector<T> vektor(10, typ);Zusätzlich habe ich zwei Iteratoren, die mir beispielsweise auf das 2. und das 7. Element dieses Vektors zeigen. Wie kann ich nun effizient die Elemente 2 bis 7 durch andere Werte vom Typ T ersetzen, so dass der Vektor danach immer noch exakt 10 Elemente besitzt? Irgendwie fehlt mir zu den vorhandenen Methoden insert() und erase() eine Methode replace() oder so ähnlich.
Kurz zur Erklärung: Das Problem bei erase() ist, dass ich nicht weiß, wieviele Elemente gelöscht worden sind (ich kenne die Distanz zwischen den beiden Iteratoren nicht a priori), so dass ich beim Einfügen Probleme bekomme, die Gesamtanzahl der Elemente konstant zu halten.
Weiß da vielleicht jemand Rat? Würde mir mal wieder sehr weiterhelfen...
Vielen Dank schon mal im Voraus...
-
Das sollte ganz einfach mit std::copy gehen.
-
Oder mit std::fill:
T typ; std::vector<T> vektor(10, typ); std::vector<T>::iterator it1 = vektor.begin() + 2; std::vector<T>::iterator it2 = vektor.begin() + 7; std::fill(it1, it2, typ(15));