在int的向量上使用std::swap

Using std::swap on a vector of int

本文关键字:std swap int 向量      更新时间:2023-10-16

我有一个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());