C++ Bidirectional 迭代器

C++ Bidirectional 迭代器 首页 / C++入门教程 / C++ Bidirectional 迭代器
  • 双向迭代器支持正向迭代器的所有函数,并且还支持两个减量运算符(前缀和后缀)。
  • 双向迭代器是用于在两个方向(即,朝向末端并朝向开始)访问元素的迭代器。
  • 随机访问迭代器也是有效的双向迭代器。
  • 许多集合都实现了双向迭代器,例如列表,集合,多集,映射,multimap。
  • C++提供了两个在两个方向上都移动的非常量迭代器:迭代器和反向迭代器。
  • C++双向迭代器具有与正向迭代器相同的函数,唯一的区别是双向迭代器也可以递减。

让我们看一个简单的示例:

#include <iostream>
#include<iterator>
#include<vector>
using namespace std;
int main()
{
   vector<int> v{1,2,3,4,5};                      //向量声明
   vector<int> ::iterator itr;                       //迭代器声明
   vector<int> ::reverse_iterator ritr;        //反向迭代器声明
   for(itr = v.begin();itr!=v.end();itr++)
   {
       cout<<*itr<<" ";
   }
   cout<<'\n';
   for(ritr = v.rbegin();ritr!= v.rend();ritr++)
   {
       cout<<*ritr<<" ";
   }
    return 0;
}

输出:

1 2 3 4 5
5 4 3 2 1

双向迭代器函数

C++ Bidirectional iterator
  • 等式/不等式运算符 : 可以使用等式不等式运算符比较双向迭代器。仅当两个迭代器都指向相同位置时,这两个迭代器才相等。

假设" A"和" B"是两个迭代器:

A==B;
A!=B;
  • 取消引用:双向迭代器也可以同时取消引用为 lvalue rvalue

假设" A"是迭代器," t"是整数变量:

*A = t;
t = *A
  • 可递增:可以使用 operator++()函数来递增双向迭代器。
A++;
++A;
  • 可递减:双向迭代器也可以通过使用Operator-()函数来减少。
A--;
--A;

双向迭代器局限性:

  • 关系运算符:相等或不相等运算符可以与双向迭代器一起使用,但其他迭代器不能应用于双向迭代器。

假设" A"和" B"是两个迭代器:

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/c++/cpp-bidirectional-iterator.html

来源:LearnFk无涯教程网

A==B;          //valid
A<=B;          //invalid
  • 算术运算符:算术运算符不能与双向迭代器一起使用,因为它会顺序访问数据。
A+2;             //invalid
A+1;             //invalid
  • 偏移解引用运算符:双向迭代器不支持对元素的随机访问使用偏移解引用运算符或下标运算符[]。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

程序员进阶攻略 -〔胡峰〕

技术管理实战36讲 -〔刘建国〕

深入剖析Kubernetes -〔张磊〕

Kafka核心技术与实战 -〔胡夕〕

流程型组织15讲 -〔蒋伟良〕

讲好故事 -〔涵柏〕

数据分析思维课 -〔郭炜〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

Go进阶 · 分布式爬虫实战 -〔郑建勋〕

好记忆不如烂笔头。留下您的足迹吧 :)