std :: move with three parameters - 迭代器由副本

时间:2016-01-25 10:49:31

标签: c++ iterator containers move

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

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

dest是一个正向输出迭代器,目标容器在values.size()之后至少有dest

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

  1. 此语法的文档在哪里?我只能在cppreference上找到单个参数版本。
  2. 有没有办法通过引用传递dest迭代器,或者将其结果作为返回值,以避免"覆盖"在循环中多次调用上述函数时的行为?
  3. 我知道每次都可以使用dest += values.size();,但为了更好的知识,我可以使用{...}

    由于

1 个答案:

答案 0 :(得分:7)

从移动算法返回

dest迭代器。你可以使用:

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

以下是此算法的链接:std::move (algorithm)