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

C++: Swap two elements of two different vectors

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

将 v1[m] 与 v2[n] 交换

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

我试过了

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

但这没有用

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

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

你想多了 - 你只需要:

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

从你的例子看来你需要的可能是 iter_swap

按照你的例子:

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

应该适合你。

你当然可以使用迭代器 swap:

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

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

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