我有一个std:vector,其中MyClass无法复制(复制构造函数和赋值构造函数都是删除),但可以移动
我想访问for循环中的元素,我该怎么做:
for(MyClass c : my_vector) {
//c should be moved out of my_vector
} // after c goes out of scope, it get's destructed (and no copies exist anymore)
我找到了move_iterator,但我无法弄清楚如何在for循环中正确使用它。
答案 0 :(得分:4)
通过引用迭代并移动:
for (auto & x : v) { foo(std::move(x)); }
使用来自std::move
的{{1}} - 算法甚至可能更合适<algorithm>
。或者,std::copy
和std::transform
之类的内容也许适合。
答案 1 :(得分:1)
像
这样的东西for(MyClass &c : my_vector) {
do_something_with(std::move(c));
}
将是我通常会做的事情。