0

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

4

2 回答 2

4

通过引用迭代并移动:

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

std::move使用-algorithm甚至可能更合适 from <algorithm>,就像std::copy。或者,也许与可能适合的东西std::transform一起使用。make_move_iterator()

于 2013-06-11T20:47:30.240 回答
1

Something like

for(MyClass &c : my_vector) {
   do_something_with(std::move(c));
}

would be what I'd normally do.

于 2013-06-11T20:46:04.197 回答