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