c++ - 带三个参数的 std::move - 通过复制传递的迭代器

标签 c++ iterator containers move

我正在使用以下 std::move 语法:

std::move(values.begin(), values.end(), dest);

dest 是前向输出迭代器,目标容器在dest

之后至少有values.size()

问题是,我在一个循环中多次调用它,但是 dest 似乎是通过拷贝传递的,因此 dest 指向的项目每次都被覆盖时间,而不是被追加。

  1. 此语法的文档在哪里?我在cppreference上只能找到单参数版本。
  2. 有没有办法通过引用传递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/

相关文章:

基于 C++ 非迭代器的范围库?

c++ - 我继承自 std::iterator,但编译器无法识别 'pointer' 或 'reference'

java - 澄清 Java Swing 中组件类的继承层次结构?

azure - 从 Azure 函数运行容器的最佳方法

c++ - 编译器无法解析函数调用

c++ - 告诉 GCC "I want to use SSE4.1, but ONLY in the places I want!"

java - 从 Java 运行 C++ 问题

c++ - 如果数组太长则初始化常量数组

java - 我应该使用 Iterator 还是 for 循环来迭代?

node.js - 使用容器隔 ionic 进程