我正在尋找最有效的方法來複制矢量列表中的矢量內容。我想盡量避免內存重新分配。C++:向量列表的高效副本
我的問題如下: 我有:
一個
std::vector<int> v
含有N個元素矢量
std::vector< std::vector<int>* > vlist
的列表,並且我知道元素的總數vlist矢量中的M是< = N (N和M可以非常大)
我想複製vlist中的所有元素(首先是vlist [0]中的所有元素,然後是vlist [1]等所有元素...),並在最後減小v的大小到M(我的項目不使用C++ 2011)。
如何儘可能有效地做到這一點?
非常感謝。
編輯:評論:v已經填充了N個元素,我想用來自其他向量的M(< = N)元素替換它們。
如果你想避免內存分配,那麼你不能真正得到一個副本,你可以得到一個參考。您可以引用一個對象,也可以創建一個對象的副本,最直觀的選擇可能是在複製時重新使用內存(這可以節省內存分配)。既然你的vector包含int,你將會把它們放在堆棧上,這樣比在堆上分配要快。 – Kiril