在 STL 中,迭代器(Iterator)用来访问和检查 STL 容器中元素的对象,它的行为模式和指针类似,但是它封装了一些有效性检查,并且提供了统一的访问格式。
迭代器的设计思维是STL的关键所在,STL的中心思想在于将容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们撮合在一起。
1、基本使用
使用类似于指针
,大部分的迭代器都支持以下两个运算符:
- 自增运算符:
++
- 解引用运算符:
*
其中,自增运算符++
用来移动迭代器,解引用可以获取或修改它所指向的元素
2、迭代器的分类
迭代器总共又五种,分别是:输入迭代器,输出迭代器,正向迭代器,双向迭代器和随机访问迭代器。具体区别见下表:
迭代器 | 描述 | 支持的运算符 | 读写 |
---|---|---|---|
输入迭代器 | 提供对数据的只读访问 | ++、*(右值)、=、==、!=、-> | 只读 |
输出迭代器 | 提供对数据的只写访问 | ++、*(左值)、= | 只写 |
正向迭代器 | 提供读写操作,并能向前推进迭代器 | ++、*、=、==、!=、-> | 读写 |
双向迭代器 | 提供读写操作,并能向前和向后操作 | ++、*、=、==、!=、->、— | 读写 |
随机访问迭代器 | 提供读写操作,并能以跳跃的方式访问容器的任意数据,是功能最强的迭代器 | ++、*、=、==、!=、->、—、+=、-=、+、-、[]、<、<=、>、>= | 读写 |