C++11
之前,我已經使用掉期到後,以避免深拷貝費用,如:使用的std ::移動
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'呢?爲什麼不只是將一個空白矢量添加到對象中,然後將Object.back()。push_back()'添加到對象中?這簡化了更多開銷。 – Ayjay
@Ayjay:閱讀問題的其餘部分 – Dani