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));
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));