我正在使用以下 std::move 语法:
std::move(values.begin(), values.end(), dest);
dest
是前向输出迭代器,目标容器在dest
values.size()
项
问题是,我在一个循环中多次调用它,但是 dest
似乎是通过拷贝传递的,因此 dest
指向的项目每次都被覆盖时间,而不是被追加。
- 此语法的文档在哪里?我在cppreference上只能找到单参数版本。
- 有没有办法通过引用传递dest迭代器,或者将其结果作为返回值,以避免在循环中多次调用上述函数时出现“覆盖”行为?
我知道我每次都可以使用 dest += values.size();
,但这是为了更好地了解...
谢谢
最佳答案
dest
迭代器从 move 算法返回。你可以只使用:
dest = std::move(values.begin(), values.end(), dest);
这里是这个算法的链接:std::move (algorithm)
关于c++ - 带三个参数的 std::move - 通过复制传递的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34990750/