1、迭代器
通过重载*、->、++、--等运算符来支持指针操作。
迭代器是容器与算法的桥梁。
2、迭代器的类型
个人理解,迭代器是一个模板类,会根据你传入的类型,生成对应的类型。这个模板类里面存放这该类型的指针,里面重载了*、!=、++等操作,当你调用begin()的时候,会将该容器中的first地址传递给这个指针,后面就是通过这个指针去进行操作。
适配器是指,类型作为模板的参数传递进去,利用现有容器,来构造成一个新的容器。
迭代器是iterator继承自const_iterator,这样就不属于适配器(因为继承的方式,就不那么适配)
反向迭代器:是以适配器的方式来实现的,是一个类模板,参数为迭代器,这就可以把正向迭代器传进去来实现,因为逻辑差不多,只不过是指针指向的位置不一样。
#include <iostream>
#include <vector>int main() {vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);vector<int>::iterator it;for(it = v.begin(); it != v.end(); ++it){cout << *it << ' ';}cout << endl;vector<int>::reverse_iterator ri;for(ri = v.rbegin(); ri != v.rend(); ++ri){cout << *ri << ' ';}cout << endl;return 0;
}
// 输出
1 2 3
3 2 1