C++ STL 迭代器

前言

要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。

迭代器按照定义方式分成以下四种:

  • 正向迭代器,定义方法如下:
容器类名::iterator 迭代器名;
  • 常量正向迭代器,定义方法如下:
容器类名::const_iterator 迭代器名;
  • 反向迭代器,定义方法如下:
容器类名::reverse_iterator 迭代器名;
  • 常量反向迭代器,定义方法如下:
容器类名::const_reverse_iterator 迭代器名;

迭代器的用法

迭代器不使用取地址符(要与指针区分开),有迭代器的类型同时拥有返回迭代器的成员,比如beginend成员。

  • begin成员:负责返回指向第一个元素(或第一个字符)的迭代器
  • end成员:负责返回指向容器(或string对象)“尾元素的下一位置(one past the end)”的迭代器,即:该迭代器指示的是容器的一个本不存在的“尾后(off the end)”元素。所以又名:尾后迭代器(off-the-end iterator)简称尾迭代器(end iterator)(无实际意义,只是个标识而已)。

如果容器为空,则beginend返回的是同一个迭代器,都是尾后迭代器。

迭代器的常用操作如下:

代码操作
*iter反回迭代器iter所指元素
iter->mem解析引用iter并获取该元素名为mem的成员,等价于(*iter).mem
iter++++iteriter指示容器的下一个元素
iter----iteriter指示容器的上一个元素
iter1==iter2判断两个迭代器是否相等,如果两个迭代器指示的是同一个元素,或它们是同一个容器的尾后迭代器,则相等

不同容器的迭代器的功能

容器迭代器功能
vector随机访问
deque随机访问
list双向
setmultiset双向
mapmultimap双向
stack不支持迭代器
queue不支持迭代器
priority_queue不支持迭代器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值