C ++:交换两个不同向量的两个元素

时间:2016-12-11 20:02:08

标签: c++ vector swap

std::vector<int> v1 = {1,3,6};
std::vector<int> v2 = {2,4,7};

用v2 [n]

交换v1 [m]

而不是复制,然后只是覆盖两个元素

我试过

std::swap(v1.begin() + m, v2.begin() + n);

但这不起作用

4 个答案:

答案 0 :(得分:0)

std::swap需要引用,而不是迭代器:

std::swap(v1[m], v2[n]);

答案 1 :(得分:0)

你过度思考 - 你只需要:

std::swap(  v1[m],  v2[n] );

答案 2 :(得分:0)

从您的示例中看,您需要的内容可能是iter_swap

根据你的例子:

std::iter_swap(v1.begin() + m, v2.begin() + n);

应该适合你。

答案 3 :(得分:0)

您当然可以使用swap

的迭代器
std::swap(*(v1.begin() + m), *(v2.begin() + n));

std::swap(v1[m], v2[n]);

std::swap(v1.at(m), v2.at(n));