“自招”在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