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);
但这不起作用
答案 0 :(得分:0)
std::swap
需要引用,而不是迭代器:
std::swap(v1[m], v2[n]);
答案 1 :(得分:0)
你过度思考 - 你只需要:
std::swap( v1[m], v2[n] );
答案 2 :(得分:0)
答案 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));