使用move_iterator访问向量

时间:2013-06-11 20:39:32

标签: c++ for-loop

我有一个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循环中正确使用它。

2 个答案:

答案 0 :(得分:4)

通过引用迭代并移动:

for (auto & x : v) { foo(std::move(x)); }

使用来自std::move的{​​{1}} - 算法甚至可能更合适<algorithm>。或者,std::copystd::transform之类的内容也许适合。

答案 1 :(得分:1)

这样的东西
for(MyClass &c : my_vector) {
   do_something_with(std::move(c));
}

将是我通常会做的事情。