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
  • 偏移解引用运算符:双向迭代器不支持对元素的随机访问使用偏移解引用运算符或下标运算符[]。

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

技术教程推荐

数据结构与算法之美 -〔王争〕

从0开始做增长 -〔刘津〕

接口测试入门课 -〔陈磊〕

恋爱必修课 -〔李一帆〕

Spring编程常见错误50例 -〔傅健〕

全链路压测实战30讲 -〔高楼〕

说透低代码 -〔陈旭〕

大型Android系统重构实战 -〔黄俊彬〕

互联网人的数字化企业生存指南 -〔沈欣〕

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