在使用 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
的示例来理解它。
v
呢?为什么不直接在 Objects 中添加一个空向量,然后Objects.back().push_back()
向其中添加元素呢?这样可以减少开销,同时更加简单。 - Ayjay