GMa*_*ckG 18 c++ containers rvalue-reference c++11
在C++ 11中,std::move当我们想要将值移动(破坏性地复制)到容器中时,我们可以提高效率:
SomeExpensiveType x = /* ... */;
vec.push_back(std::move(x));
Run Code Online (Sandbox Code Playgroud)
但我找不到任何其他方式.我的意思是这样的:
SomeExpensiveType x = vec.back(); // copy!
vec.pop_back(); // argh
Run Code Online (Sandbox Code Playgroud)
这在适配器上更常见(copy-pop)stack.可能存在这样的事情:
SomeExpensiveType x = vec.move_back(); // move and pop
Run Code Online (Sandbox Code Playgroud)
为了避免副本?这已经存在了吗?我在n3000中找不到类似的东西.
我有一种感觉,我错过了一些非常明显的东西(比如它的不必要),所以我准备好了"ru dum".:3
lei*_*eiz 17
我可能在这里完全错了,但不是你想要的
SomeExpensiveType x = std::move( vec.back() ); vec.pop_back();
Run Code Online (Sandbox Code Playgroud)
假设SomeExpensiveType有一个移动构造函数.(显然适用于您的情况)
| 归档时间: |
|
| 查看次数: |
3281 次 |
| 最近记录: |