c++ - 使用 std::move

标签 c++ c++11

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::movev 移动到 Objects 中而不是 swap?
我知道这里有很多变通方法,比如多数组或直接插入 Objects.back(),但我需要一个 std::move 的用法示例明白了。

最佳答案

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

关于c++ - 使用 std::move,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733741/

相关文章:

c++ - 是否有一种完全符合标准的方法可以使编译器将文件的确切(二进制)内容粘贴到源文件中?

c++ - 在外部类中使用类模板时如何定义内部类构造函数?

c++ - 我怎样才能告诉客户等到它收到所有数据?

c++ - 始终将非虚拟方法标记为 final 是个好主意吗?

c++ - 尝试使用 boost::serialization 和 arcive 反序列化对象时得到 "input stream error"

c++ - 使用 MATLAB mex 将 vector 分配给另一个 vector 时出现段错误

python - 在 pybind11 (C++) 中使用内置的 "open"python 方法?

c++ - 模板类中模板类的结构体

c++ - 如何在删除元素时防止重新散列 std::unordered_map?

c++ - int* 指针与 int *pointer 的指针声明