双向迭代器
Coddy C++ 标准模板库 课程的第 17 课,共 23 课。
双向迭代器支持前向迭代器的所有功能,还支持两种递减运算符(前置和后置)。因此,双向迭代器可以用于双向访问和修改元素序列,既可以朝序列末尾移动,也可以朝序列开头移动。

如你所见,随机访问迭代器也是有效的双向迭代器。
接下来,我们将学习双向迭代器的特性。
- 相等/不等运算符:双向迭代器可以使用相等运算符或不等运算符进行比较。只有当两个迭代器都指向同一位置时,它们才相等。
A == B // 相等
A != B // 不相等- 解引用
我们可以对双向迭代器进行解引用,以实现两种功能:访问迭代器所指向元素的值,以及为该元素赋值。
*A = X;
X = *A;- 可递增/可递减
双向迭代器可以使用++运算符递增,也可以使用--运算符递减。
A++; // 后置自增运算符
++A; // 前置自增运算符
A--; // 前置自减运算符
--A; // 后置自减运算符- 可交换
一个双向迭代器的值可以与另一个双向迭代器的值互换。
最后总结一下:双向迭代器与前向迭代器非常相似,后者将输入迭代器和输出迭代器合二为一。双向迭代器还可以递减,这意味着它能够沿两个方向访问序列中的元素。
挑战
简单输入的一行中给出了 10 个数字。下一行给出了一个数字 X,表示数字的索引(索引范围为 1-10)。使用双向迭代器,先从索引 X 开始输出数字,直到末尾。然后从索引 X 开始,向前输出数字,直到开头。
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10亲手试试
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> numbers;
vector<int>::iterator it1, it2;
int x, y;
// Enter your code here
it1 = numbers.begin();
it1 += x - 1;
for(it1; it1 != numbers.end(); )
cout << << " ";
cout << endl;
for(it2; it2 != numbers.begin() - 1; )
cout << << " ";
return 0;
}C++ 标准模板库中的所有课
自己练习: C++ 在线编译器