Czy istnieje standardowy sposób przenoszenia zakresu do wektora?

Rozważmy następujący program, który wstawia szereg elementów do wektora:

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());

To skutecznie kopiuje zakres, przydzielając wystarczającą ilość miejsca w wektorze docelowym dla całego zakresu, tak że wymagana będzie maksymalna zmiana rozmiaru. Rozważmy teraz następujący program, który próbuje przenieść zakres do wektora:

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));
});

Wykonuje to udany ruch, ale nie cieszy się korzyściami, jakie insert () ma w odniesieniu do wstępnego przydzielania miejsca w wektorze docelowym, więc wektor może zostać zmieniony kilka razy podczas operacji.

Moje pytanie brzmi: czy istnieje odpowiednik wstawki, który może przesunąć zakres do wektora?

questionAnswers(2)

yourAnswerToTheQuestion