Elemente von std :: vector in einen anderen verschieben
Wie kann ich einige Elemente aus den ersten Vektor zum zweiten, und die Elemente, die Sie von der ersten?
wenn ich mit std::move
, die Elemente, die nicht entfernt von der ersten vector.
dies ist der code, den ich schrieb:
move(xSpaces1.begin() + 7, xSpaces1.end(), back_inserter(xSpaces2));
InformationsquelleAutor der Frage user1544067 | 2013-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
std::move
können Sie verschieben Sie die Objekte, im Gegensatz zu, Sie zu kopieren, so dass für eine möglicherweise schnellere Ausführungsgeschwindigkeit. Die Einsparungen sogar noch größer sein können, wenn Sie bewegen eine Reihe von Werten. Allerdings, wenn Sie tun verschieben Sie eine Palette aus einem container, der container hält immer noch die Plätze wurden wieder besetzt, die diese Werte.Müssen Sie die Größe der container manuell zu entfernen, diese Platzhalter wenn Sie möchten, um loszuwerden von Ihnen (Sie müssen nicht in den Fall, Sie es vorziehen würden die Wiederverwendung dieser container stellen für andere Elemente). Ein Weg dazu ist es zu nennen,
vector::erase
auf der gleichen Strecke, die Sie zog aus dem container.InformationsquelleAutor der Antwort dasblinkenlight
std::move
undstd::copy
arbeiten auf Elementenicht Container. Sie haben zu mutieren, die container getrennt. Beispielsweise, um die ersten 17 Elementev1
in einen neuen Vektorv2
:Nach Strich
##
die ersten 17 Elementev1
sind immer noch da, aber Sie waren "verschoben-aus", also sind Sie in einem unbestimmten Zustand.InformationsquelleAutor der Antwort Kerrek SB
Er ein Alter thread, aber ich bin überrascht, dass niemand erwähnt
std::make_move_iterator
kombiniert mitinsert
. Er hat die wichtige Leistung von preallocating Speicherplatz in den Ziel-Vektor:Wie andere haben darauf hingewiesen, ersten Vektor
v1
ist nun in unbestimmten Zustand, so verwenden Sieerase
deaktivieren Sie das Durcheinander:InformationsquelleAutor der Antwort Miljen Mikic
Können Sie nicht verschieben Sie Elemente aus einem Vektor zu einem anderen den Weg, Sie denken, Sie werden immer löschen das element Stellungen aus dem ersten Vektor.
Wenn Sie ändern möchten alle Elemente von der erste Vektor in den zweiten und Umgekehrt können Sie swap.
Wenn Sie möchten, um die gleiche Menge von Elementen zwischen zwei Vektoren, die Sie verwenden können, swap_ranges
InformationsquelleAutor der Antwort alestanis