在这里,我们将看到C ++中双向迭代器的概念。
双向迭代器支持正向迭代器的所有功能,还支持前缀和后缀减量运算符。
这种类型的迭代器可以在两个方向上访问元素,例如朝着结束和朝着开始。
随机访问迭代器也是双向迭代器的一种。
双向迭代器具有正向迭代器的功能,但是唯一的区别是该迭代器也可以递减。
双向迭代器具有一些属性。这些如下。
| 属性 | 表达 | 
|---|---|
| 双向迭代器是默认可构造的,可复制分配的并且也是可破坏的 | A p  A q(p) q = p  | 
| 我们可以使用相等和不相等运算符比较它们 | p == q  p!= q  | 
| 可以取消引用。我们可以使用解引用运算符(*)来获取值。 | * p | 
| 可变迭代器可以取消引用为左值 | * p = t | 
| 我们可以使用增量运算符(++)和减量运算符(-)进行递增或递减 | p ++  q--  | 
#include <iostream>
#include<iterator>
#include<vector>
using namespace std;
int main() {
   vector<int> vec{10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
   vector<int> ::iterator it;
   vector<int> :: reverse_iterator rev_it;
   for(it = vec.begin(); it != vec.end(); it++)
      cout<<*it<<" ";
      cout<< endl;
   for(rev_it = vec.rbegin(); rev_it!= vec.rend(); rev_it++)
      cout<<*rev_it<<" ";
}输出结果
10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10