「自招」在C++ 11中,我們可以通過使用std::move
得到提升效率時,我們要移動(複製破壞性)值到一個容器:C++容器
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
但我不能發現另一種方式。我的意思是這樣的:在適配器的像stack
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
這是更頻繁(複印件流行)。可以這樣的事情存在:
要避免複製?這是否已經存在?我在n3000中找不到那樣的東西。
我有一種感覺,我失去了一些痛苦明顯的東西(比如它的不必要的東西),所以我準備爲「ru dum」做準備。 :3
移動方法對超出範圍的變量有什麼影響?例如,如果我創建了一個對象,將其添加到成員容器中,那麼該對象將超出作用域...由於沒有創建副本,成員容器中的對象是否仍然定義? – Polaris878 2010-01-26 22:19:03
是的,它被移入容器中。如果你不確定它們是如何工作的,你會想要谷歌右值引用。 – GManNickG 2010-01-26 22:21:41
甜蜜的感謝...我將不得不深入這個更多的哈哈。在表面看來,這似乎會導致問題。 – Polaris878 2010-01-26 22:33:19