前言
本篇继续学习C++ STL的内容,迭代器。
迭代器
上篇提到,迭代器是一种用于访问和遍历容器内元素的数据类型,是指针的泛化。迭代器使得编程时,可以用同一种方法处理不同的容器。
定义迭代器
容器有自己的迭代器类型,创建迭代器的方法是 容器类型<数据类型>::迭代器类 迭代器名
迭代器类可分为:
iterator正向迭代器const_iterator常量正向迭代器reverse_iterator反向迭代器const_reverse_iterator常量反向迭代器
正向迭代器的++操作是指向容器的后一个元素;反向迭代器的++操作时指向容器的前一个元素。
const_iterator可以指向const和非const容器,但指向的元素值是不能通过该迭代器修改的(类似常量指针)。
被声明为const的迭代器const xxx<xxx>::iterator与const_iterator不同,意思是迭代器的指向不能改变(类似指针常量)。
注意:反向迭代器可通过正向迭代器构造,也可通过rbegin(),rend()函数获得。
注意:反向迭代器指向的首元素是容器的最后一个元素,也就是说rbegin()指向最后一个元素;rend()指向第一个元素前一个元素的位置。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int> vec(5);
vector<int>::reverse_iterator iter(vec.rend());
iter--;
*iter = 5;
for(int i: vec)
cout << i << ' ';
cout << iter[0];
return 1;
}
迭代器功能
所有迭代器都能够:
输入迭代器增加了:
*迭代器取值(右值)=迭代器赋值==,!=相等与不等
输出迭代器增加了:
正向迭代器:
双向迭代器在正向基础上增加了:
随机迭代器在双向基础上增加了:
+,-,+=,-=各种迭代器移动操作[]取值,类似指针[]>,<,>=,<=迭代器比较
|