当前位置:网站首页>STL迭代器
STL迭代器
2022-08-03 06:34:00 【干饭小白】
迭代器的基本原理
- 迭代器是一个"可遍历STL容器内部分或全部元素"的对象
- 迭代器指出容器中的一个特定位置
- 迭代器就如同一个指针
- 迭代器提供对一个容器中的对象的访问方法,并且可以定义容器中对象的范围
- 迭代器就像一个指针
迭代器的分类
输入迭代器:
又称为"只读迭代器",它从容器中读取元素,只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列。
输出迭代器:
又称为"只写迭代器",它往容器中写入元素,只能一次写入一个元素向前移动,同一个输出迭代器不能两边遍历一个序列。
正向迭代器:
组合输入迭代器和输出迭代器的功能,还可以多次解析一个迭代器指定位置,可以对一个值进行多次读/写
双向迭代器:
组合正向迭代器的功能,还可以通过操作符向后移动位置
随机访问迭代器:
组合双向迭代器的功能,还可以向前向后跳过任意个位置,可以直接访问容器中任何位置的元素
双向迭代只能一步一步的走,随机迭代器可以跨很多步走
vector与迭代器的配合使用
vector<int> vecInt; //假设包含1,3,5,7,9元素
vector<int>::iterator it; //声明容器vector<int>迭代器
it = vecInt.begin();
it++ it+=2....
//正向遍历
vector<int> vecInt;
for(vector<int>::iterator it=vecInt.begin();it!=vecInt.end();++it)
{
int tmp = *it;
cout<<tmp<<"\t";
}
//逆向遍历
for(vector<int>::reverse_iterator it=vecInt.rbegin();it!=vecInt.rend(),++it)
{
int tmp;
cout<<tmp<<"\t";
}deque容器与迭代器
deque.begin(); //返回容器中第一个元素的迭代器
deque.end(); //返回容器中最后一个元素之后的迭代器
deque.rbegin(); //返回容器中倒数第一个元素的迭代器
deque.rend(); //返回容器中倒数最后一个元素之后的迭代器
for(deque<int>::iterator it=deqInt.begin();it!=deqInt.end(),++it)
{
cout<<*it;
cout<<"";
}
for(deque<int>::reverse_iterator rit=deqInt.rbegin();rit!=deque.rend();++rit)
{
cout<<*rit;
cout<<"";
}边栏推荐
- MySQL - 触发器
- spark中的cache和checkpoint
- 多线程打印ABC(继承+进阶)
- 关于任命韩文弢博士代理NOI科学委员会主席的公告
- c现代方法16章基础
- 2022用户画像构建
- El - tree set using setCheckedNodessetCheckedKeys default check nodes, and a new check through setChecked specified node
- ISIJ 2022收官,中国初中生再展风采
- 调用feign报错openfeign/feign-core/10.4.0/feign-core-10.4.0.jar
- 【playwright】pytest-playwright增加代理服务选项
猜你喜欢
随机推荐
6.nodejs--promise、async-await
死锁的成因和对应的解决方案
MySQL - 触发器
【Shell】3万字图文讲解带你快速掌握shell脚本编程
static数据成员
多线程打印ABC(继承+进阶)
关于Attention的超详细讲解
信息学奥赛一本通T1447:靶形数独
信息学奥赛一本通T1446:素数方阵
MySQL - 视图操作
PHP 获取服务器信息
Charles capture shows
solution idea远程debug
HCIP笔记整理 2022/7/18
Embedding two implementations of the torch code
IFM network detailed explanation and torch reproduction
MySQL性能优化(硬件,系统配置,表结构,SQL语句)
Week5
安全狗云原生安全能力全面亮相全球数字经济大会暨ISC互联网安全大会
keepalived安装部署









