STL vector element verschieben
-
Hallo,
angenommen ich habe einen int-vector mit 10 Elementen...
Wie kann ich z.B. das zweite Element an die siebte Stelle verschieben?
-
Warum willst du das machen?Vielleicht können dir einen besseren Lösungsansatz bieten wenn du uns erklärst was du machen willst.
-
std::swap()
Halt nein, hab nicht nachgedacht.
Aber ich lass es mal stehen.
-
Verschieben ist in einem
std::vector
nicht sehr performant. Mitstd::copy()
kannst du einzelne Elemente verschieben, dann müsstest du das letzte überschreiben. Oder alternativerase()
undinsert()
anwenden.
-
Also ich habe einen vector von 10 int-Elementen
Diesen hab ich per iterator in zwei hälften aufgeteilt (Iterator für das erste Element der zweiten Liste)vector<int> vi; for (unsigned int i = 0 ; i < 10 ; i++) vi.push_back(i); vector<int>::iterator iter = vi.begin() + 5;
ich möchte es möglich machen Elemente aus der ersten Hälfte zumindest an den Beginn der zweiten Hälfte zu verschieben...
mein Problem: nach erase(vi.begin()+1) wird iter ungültig...
-
daersc schrieb:
mein Problem: nach erase(vi.begin()+1) wird iter ungültig...
Hast Du mal nachgeschaut, was erase() Dir zurückliefert?
Und für das, was Du machen möchtest, hast Du einfach den falschen Containertyp gewählt.
-
Was willst du denn mit dem Container machen?
Mit std::vector zu verschieben ist wie bereits gesagt wurde, nicht sonderlich performant (es muss ne ganze Menge umkopiert werden) - dafür nimmt man üblicherweise andere Container (std::list oder std::deque oder oder oder - je nach dem, was du machen möchtest ^^).Also schreib einfach mal, was genau du machen möchtest - also welche Anforderungen du an den Container stellst...
bb