Gibt es eine Standardmethode zum Verschieben eines Bereichs in einen Vektor?

Betrachten Sie das folgende Programm, das eine Reihe von Elementen in einen Vektor einfügt:

vector<string> v1;
vector<string> v2;

v1.push_back("one");
v1.push_back("two");
v1.push_back("three");

v2.push_back("four");
v2.push_back("five");
v2.push_back("six");

v1.insert(v1.end(), v2.begin(), v2.end());

Dadurch wird der Bereich effizient kopiert und im Zielvektor genügend Platz für den gesamten Bereich zugewiesen, sodass maximal eine Größenänderung erforderlich ist. Betrachten Sie nun das folgende Programm, das versucht, einen Bereich in einen Vektor zu verschieben:

vector<string> v1;
vector<string> v2;

v1.push_back("one");
v1.push_back("two");
v1.push_back("three");

v2.push_back("four");
v2.push_back("five");
v2.push_back("six");

for_each ( v2.begin(), v2.end(), [&v1]( string & s )
{
    v1.emplace_back(std::move(s));
});

Dies führt eine erfolgreiche Verschiebung aus, hat jedoch nicht die Vorteile, die insert () in Bezug auf die Vorbelegung von Speicherplatz im Zielvektor hat, sodass die Größe des Vektors während der Operation mehrmals geändert werden könnte.

Meine Frage lautet also: Gibt es ein Einfügeäquivalent, mit dem ein Bereich in einen Vektor verschoben werden kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage