使用std::移动

Using std::move

本文关键字:移动 std 使用      更新时间:2023-10-16

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移动vObjects,以避免深度复制开销,而不是swap ?
我知道这里有很多变通方法,如多数组或直接插入Objects.back(),但我需要一个std::move使用的例子来理解它。

Objects.push_back( std::move( v ) );
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));
}