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

时间:2014-10-24 00:57:15

标签: c++ std reverse

如果我有

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

如何使用

  

的std ::逆转

将其变为

  

vec {2,1,3,4}

2 个答案:

答案 0 :(得分:5)

您可以将reverse与迭代器一起用作以下参数:

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

You may take a look here

答案 1 :(得分:1)

您不需要使用std::reverse来实现更简单的操作。如果您只想交换前两个元素,请使用:

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

如果您希望交换两个 groups 中的元素(仅在末尾留下任何奇怪的元素),您可以使用以下内容:

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

如果你想要反转一个 more 的矢量部分,而不是两个元素,那就是我要考虑使用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}