概念:迭代器是一种抽象的概念,允许依序访问某个容器所含的各个元素,且无需暴露容器的内部结构。是一种类似于指针的对象(指针的各种行为中最常见且最重要的是解析和成员访问)。
迭代器是容器与算法之间的接口,算法通过迭代器访问容器中的元素,若一个算法采用迭代器作为参数,则可作用于多种不同的容器。
迭代器的重要性:几乎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 }
浙公网安备 33010602011771号