如果我有
vector<int> vec { 1, 2, 3, 4}
如何使用
的std ::逆转
将其变为
vec {2,1,3,4}
答案 0 :(得分:5)
您可以将reverse
与迭代器一起用作以下参数:
vector<int> vec { 1, 2, 3, 4};
reverse(vec.begin(), vec.begin()+2);
答案 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}