在使用C++11之前,我使用了交换回技术来避免深度复制开销,例如:
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用法的示例来理解它。
发布于 2011-10-12 07:38:12
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));
}发布于 2011-10-12 07:38:09
Objects.push_back( std::move( v ) );https://stackoverflow.com/questions/7733741
复制相似问题