Подтвердить что ты не робот

Использование std:: move

До C++11 я использовал swap-to-back, чтобы избежать чрезмерных накладных расходов, например:

vector<vector<Object> > Objects;

for(/* some range */)
{
    vector<Object> v;
    for(/* some other range */)
    {
        v.push_back(/* some object */);
    }
    Objects.push_back(vector<Object>());
    Objects.back().swap(v);
}

Как я могу использовать std::move для перемещения v в Objects, чтобы избежать чрезмерных служебных данных, а не swap?
Я знаю, что здесь есть много обходных решений, таких как несколько массивов или просто вставка непосредственно в Objects.back(), но для этого мне нужен пример использования std::move.

4b9b3361

Ответ 1

vector<vector<Object> > Objects;

for(/* some range */)
{
    vector<Object> v;
    for(/* some other range */)
    {
        v.push_back(/* some object */);
    }
    Objects.push_back(std::move(v));
}

Ответ 2

Objects.push_back( std::move( v ) );