C++ 迭代器类型

来源:互联网 发布:linux安装tar.xz文件 编辑:程序博客网 时间:2024/06/14 01:47

C++ STL包括:

容器、算法、迭代器、函数对象

迭代器:用于遍历容器,独立于数据类型和容器类型


迭代器的类型:

1输入迭代器

  ‘输入’是从程序的角度来说,既输入来自容器,输入迭代器被程序用来读取容器的信息

   具体说:对输入迭代器解除引用可以使程序能够读取容器的值,但不一定能修改,因此,需要输入迭代器的算法将不会修改容器中的值

   通过++操作符(前缀格式和后缀格式)访问容器中所有的值

   但不能保证,输入迭代器第二次遍历容器时,顺序不变,另外,输入迭代器被递增后,不能保证其先前的值仍然可以被解除引用

   基于输入迭代器的任何算法都应当是单通行的,不依赖前一次遍历时的迭代器的值,也不依赖本次遍历中前面的迭代器的值

   输入迭代器是单向迭代器,只能递增,不能倒退


2输出迭代器

  ‘输出’是将信息从程序传输给容器的迭代器,输出迭代器只是解除引用让程序能修改容器的值,而不能读取(cout可以修改送到显示器的字符流

    但不能读取屏幕上的内容)。

    简言之:对于单通行、只读算法,可以使用输入迭代器;对于单通行、只写算法,可以使用输出迭代器


3正向迭代器

      与输入迭代器和输出迭代器相似,正向迭代器只使用++操作符来遍历容器,每次沿容器向前移动一个元素

   但是,与输入和输出迭代器不同的是,它总是按相同的顺序遍历一系列的值

   另外,将正向迭代器递增后,仍然可以对前面的迭代器值解除引用,并可以得到相同的值

   正向迭代器既可以使得能够读取和修改数据,也可以使得只能读取数据

    int *pirw;

    const int * pir;


4双向迭代器

  可以双向遍历容器,支持递减操作符


5随机访问迭代器

 具有双向迭代器的所有特性,同时添加了支持随机访问的操作

原创粉丝点击