迭代器的基本使用(遍历)
一、定义
迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。不同之处在于,迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此,每一种容器型都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义于内部。
二、应用
接下来我简单的介绍迭代器的简单应用
vector的正向和反向遍历方法
我们以打印举例:
void print_vector(const vector<int>& v);
最常用的遍历方法是for + operator[]
- 正向遍历
for(int i = 0; i < v.size; i++) { cout<<v[i]<<" "; } cout<<endl;
- 反向遍历
for(int i = v.size-1; i >= 0; i--) { cout<<v[i]<<" "; } cout<<endl;
利用iterator遍历
- 正向遍历
vector<int>::const_iterator it = v.begin(); while(it != v.end()) { cout<<*it<<" "; it++; } cout<<endl;
这里需要注意的是不要将const_iterator写成iterator,因为v传进来是const的所以调不动iterator
- 反向遍历
vector<int>::const_reverse_iterator it = v.rbegin(); while(it != v.rend()) { cout<<*it<<" "; it++; } cout<<endl;
如上,迭代器在遍历容器中的应用。