在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);
}
Run Code Online (Sandbox Code Playgroud)
如何使用std::move移动v到Objects以避免深拷贝的开销,而不是swap?
我知道这里有很多变通方法,比如多数组或直接插入Objects.back(),但我需要一个使用std::move它的例子来理解它.
K-b*_*llo 17
Objects.push_back( std::move( v ) );
Run Code Online (Sandbox Code Playgroud)
seh*_*ehe 16
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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |