学习记录--迭代器

Posted on 2020-12-19 15:36  Mikrokosmos  阅读(88)  评论(0)    收藏  举报

概念:迭代器是一种抽象的概念,允许依序访问某个容器所含的各个元素,且无需暴露容器的内部结构。是一种类似于指针的对象(指针的各种行为中最常见且最重要的是解析和成员访问)。

 

迭代器是容器与算法之间的接口,算法通过迭代器访问容器中的元素,若一个算法采用迭代器作为参数,则可作用于多种不同的容器。

 

迭代器的重要性:几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本省所专有的迭代器,用于存取容器中的元素。

 

迭代器的作用:

迭代器类型 功能 支持的容器
输入迭代器 从容器读取元素,输入迭代器只能一次一个元素地向前移动。输入迭代器只支持一遍算法,同一输入迭代器不能两次遍历一个序列 istream
输出迭代器 向容器写入元素,输出迭代器只能一次一个元素地向前移动。只支持一遍算法,同一输出迭代器不能两次遍历一个序列。 ostream,insert
前向迭代器 组合输入迭代器与输出迭代器的功能,并保留在容器中的位置作为状态信息,支持多遍算法  
双向迭代器 组合正向迭代器和逆向迭代器的功能(逆向迭代器即为从容器末尾到容器开头) list,set,multiset,map,multimap
随机存取迭代器 组合双向迭代器的功能与直接访问容器中任何元素的功能,即可以向前或向后跳过任意个元素 vector,deque,string

 

迭代器的使用例子:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<vector>
 4 #include<algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     //构造一个vector,mylist相当于一个数组,类型为int
 9     vector<int>mylist;
10     int temp;
11     for (int i = 0; i < 5; i++)
12     {
13         cout << "请输入一个整数:" << endl;
14         cin >> temp;
15         mylist.push_back(temp);//将读入的整数保存到mylist中
16     }
17     cout << "从头到尾输出容器中的元素:" << endl;
18     vector<int>::iterator outputIterator = mylist.begin();
19     while (outputIterator != mylist.end())
20     {
21         cout << *outputIterator << " ";
22         outputIterator++;
23     }
24     cout << endl;
25     cout << "输出排序后的元素:" << endl;
26     sort(mylist.begin(), mylist.end());
27     outputIterator = mylist.begin();
28     while (outputIterator != mylist.end())
29     {
30         cout << *outputIterator << " ";
31         outputIterator++;
32     }
33     cout << endl;
34     return 0;
35 }

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3