目录
迭代器:
首先,容器:容器本质上是用来存储大量数据的,也可以说是一串存储单元。
数据既然在容器中,那么就需要大量次数的对数据进行遍历,因此,迭代器诞生了。
简单来讲,迭代器和C++的指针很相似,它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读/写操作。它的作用就是遍历序列中的对象。
迭代器分类:
常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器 5 种。
前向迭代器:
假设 p 是一个前向迭代器,则 p 支持 ++p,p++,*p 操作,还可以被复制或赋值,可以用 == 和 != 运算符进行比较。此外,两个正向迭代器可以互相赋值。
双向迭代器:
双向迭代器具有正向迭代器的全部功能,除此之外,假设 p 是一个双向迭代器,则还可以进行 --p 或者 p-- 操作(即一次向后移动一个位置)。
随机访问迭代器:
随机访问迭代器具有双向迭代器的全部功能。除此之外,假设 p 是一个随机访问迭代器,i 是一个整型变量或常量,则 p 还支持以下操作:
使得 p 往后移动 i 个元素。
p-=i:使得 p 往前移动 i 个元素。
p+i:返回 p 后面第 i 个元素的迭代器。
p-i:返回 p 前面第 i 个元素的迭代器。
p[i]:返回 p 后面第 i 个元素的引用。
迭代器定义方式:
正向迭代器:
容器类名::iterator 迭代器名
常量正向迭代器:
容器类名::const_iterator 迭代器名
反向迭代器:
容器类名::reverse_iterator 迭代器名
常量反向迭代器:
容器类名::const_reverse_iterator 迭代器名
反向迭代器和正向迭代器的区别:
对正向迭代器进行 ++ 操作时,迭代器会指向容器中的后一个元素。
对反向迭代器进行 ++ 操作时,迭代器会指向容器中的前一个元素。