使用std::reverse来反转向量的前几个元素的顺序

Using std::reverse to reverse the order of the first few elements of a vector

本文关键字:几个 顺序 元素 reverse 使用 向量 std      更新时间:2023-10-16

如果我有

vector<int> vec { 1, 2, 3, 4}

如何使用

std::反向

把它变成

vec{2,1,3,4}

您可以使用带有迭代器的reverse作为参数,如下所示:

vector<int> vec { 1, 2, 3, 4};
reverse(vec.begin(), vec.begin()+2);

您可以在此处查看

对于本质上简单得多的操作,不需要使用std::reverse。如果您只想交换前两个元素,请使用:

std::swap (vec[0], vec[1]);

如果你想交换两个中的元素(只在最后留下任何一个奇数),你可以使用这样的东西:

for (int i = 0, lim = vec.size() - vec.size() % 2; i < lim; i += 2)
    std::swap (vec[i], vec[i+1]);

如果你想反转向量的一部分,它比两个元素更多,这就是我考虑使用std::reverse的地方。您可以使用以下调用来反转向量vec中包含{1, 2, 3, 4, 5}的部分:

std::reverse (vec.begin(),     vec.end()      ); // -> {5, 4, 3, 2, 1}
std::reverse (vec.begin(),     vec.begin() + 3); // -> {3, 2, 1, 4, 5}
std::reverse (vec.begin() + 1, vec.begin() + 4); // -> {1, 4, 3, 2, 5}