在 int 向量上使用 std::swap
Using std::swap on a vector of int
我有一个 vector
的整数...我只想交换两个值。
std::vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
vec.push_back(6);
vec.push_back(7);
vec.push_back(8);
std::swap(vec.begin(), vec.end());
在调用交换之前,我的 vec 为:
[0,1,2,3,4,5,6,7,8]
在 std::swap(...)
之后,我希望 vec 为:
[8,1,2,3,4,5,6,7,0]
但它仍然是初始状态。
这里有什么问题?
这应该可以解决问题
assert(!vec.empty());
std::swap(vec.front(), vec.back());
我有一个 vector
的整数...我只想交换两个值。
std::vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
vec.push_back(6);
vec.push_back(7);
vec.push_back(8);
std::swap(vec.begin(), vec.end());
在调用交换之前,我的 vec 为:
[0,1,2,3,4,5,6,7,8]
在 std::swap(...)
之后,我希望 vec 为:
[8,1,2,3,4,5,6,7,0]
但它仍然是初始状态。 这里有什么问题?
这应该可以解决问题
assert(!vec.empty());
std::swap(vec.front(), vec.back());