前言
本篇继续学习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;
}
迭代器功能
所有迭代器都能够:
输入迭代器增加了:
* 迭代器取值(右值)= 迭代器赋值==,!= 相等与不等
输出迭代器增加了:
正向迭代器:
双向迭代器在正向基础上增加了:
随机迭代器在双向基础上增加了:
+,-,+=,-= 各种迭代器移动操作[] 取值,类似指针[]>,<,>=,<= 迭代器比较
|