【发布时间】:2016-05-01 15:40:33
【问题描述】:
我正在使用以下 std::move 语法:
std::move(values.begin(), values.end(), dest);
dest是前向输出迭代器,目标容器在dest之后至少有values.size()项
问题是,我在一个循环中多次调用它,但 dest 似乎是通过副本传递的,因此 dest 指向的项目每次都被覆盖,而不是被附加。
- 此语法的文档在哪里?我在 cppreference 上只能找到单参数版本。
- 有没有办法通过引用传递dest迭代器,或者将其结果作为返回值,以避免在循环中多次调用上述函数时出现“覆盖”行为?
我知道我每次都可以使用dest += values.size();,但这是为了更好地了解...
谢谢
【问题讨论】:
-
你可能想要
dest = std::move(values.begin(), values.end(), dest); -
寻找算法中的那个:en.cppreference.com/w/cpp/algorithm/move(注意底部有一个交叉链接可以在算法移动和实用程序之间切换i> 移动)
标签: c++ iterator containers move