C++中如果一个序列给了两个位置的下标,如何使用reverse去翻转这两个位置?
时间: 2023-12-10 21:38:52 浏览: 58
可以使用C++中的`reverse`函数来实现。
首先,需要将两个位置的下标存储在两个变量中,假设它们分别为`pos1`和`pos2`。
然后,将序列从`pos1`到`pos2`的子序列进行翻转。这可以通过将`reverse`函数应用于迭代器来完成。代码如下:
```cpp
auto start = sequence.begin() + pos1;
auto end = sequence.begin() + pos2 + 1;
reverse(start, end);
```
其中,`begin()`函数返回一个迭代器,指向序列的第一个元素。通过将其加上`pos1`和`pos2`,可以得到指向要翻转的子序列的起始和结束位置的迭代器。最后,将这两个迭代器传递给`reverse`函数即可完成翻转。
完整代码示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> sequence = {1, 2, 3, 4, 5};
int pos1 = 1;
int pos2 = 3;
auto start = sequence.begin() + pos1;
auto end = sequence.begin() + pos2 + 1;
reverse(start, end);
for (auto i : sequence) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
1 4 3 2 5
```
阅读全文