C 0x“從”容器移動“
在C 0x中,我們可以提高有關使用std :: move的容器的效率提升:
SomeExpensiveType x = /* ... */; vec.push_back(std::move(x));
但我找不到任何其他方式.我的意思是這樣的:
SomeExpensiveType x = vec.back(); // copy! vec.pop_back(); // argh
這在介面卡的堆疊上更加頻繁(複製彈出).可能有這樣的事情存在:
SomeExpensiveType x = vec.move_back(); // move and pop
為了避免複製?這是否已經存在?在n3000中找不到這樣的東西.
我有一種感覺,我失去了一些痛苦的東西(如它的不必要的),所以我準備好了“ru dum”. :3
我可能總是錯在這裡,但不是你想要的只是
SomeExpensiveType x = std::move( vec.back() ); vec.pop_back();
假設SomeExpensiveType有一個移動建構函式. (對你的情況顯然是真的)
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/2142965/c0x-move-from-container