迭代器

迭代器的含义

引自

代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。

加不加 const_ 取决于容器是不是常亮容器

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

1) 正向迭代器,定义方法如下:
容器类名::iterator  迭代器名;


2) 常量正向迭代器,定义方法如下:
容器类名::const_iterator  迭代器名;


3) 反向迭代器,定义方法如下:
容器类名::reverse_iterator  迭代器名;


4) 常量反向迭代器,定义方法如下:
容器类名::const_reverse_iterator  迭代器名;

正、反迭代器的区别

引自

可以用 base() 将反向迭代器转换成正向迭代器

可以通过reverse_iterator::base()将反向迭代器转换为普通迭代器使用,从逆序得到普通次序。
有些容器的成员函数只接受iterator类型的参数,所以如果你想要在ri所指的位置插入一个新元素,你不能直接这么做,因为vector的insert函数不接受reverse_iterator。如果你想要删除ri 所指位置上的元素也会有同样的问题。erase成员函数会拒绝reverse_iterator,坚持要求iterator(这个可以去试一试)。为了完成删除和一些形式的插入操作,你必须先通过base函数将reverse_iterator转换成iterator,然后用iterator来完成工作。
迭代器都可以进行++操作。反向迭代器和正向迭代器的区别在于:

对正向迭代器进行++操作时,迭代器会指向容器中的后一个元素;
而对反向迭代器进行++操作时,迭代器会指向容器中的前一个元素。

上一篇:MISC 高手进阶区 1-5


下一篇:数组代码的IDEA手敲