当前位置:网站首页>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<<"";
}
边栏推荐
猜你喜欢
第一章:ARM公司Cortex-M 系列处理器介绍,第二章:嵌入式软件开发介绍和第三章:Cortex-M3和Cortex-M4处理器的一般介绍
(十五)51单片机——呼吸灯与直流电机调速(PWM)
【RT_Thread学习笔记】---以太网LAN8720A Lwip ping 通网络
【playwright】pytest-playwright增加代理服务选项
信息学奥赛一本通T1450:Knight Moves
postman将接口返回结果生成json文件到本地
Example of embedding code for continuous features
mysql慢查询优化
MySQL忘记密码怎么办
学会可视化大屏布局技巧,让领导都赞不绝口
随机推荐
el-table gets the data attribute of a row in the read data table
MySQL日期和时间戳的转换
JS作用对象API技巧
学会可视化大屏布局技巧,让领导都赞不绝口
关于NOI 2022的报到通知
Docker-compose安装mysql
戳Web3的神话?戳到铁板。
神经网络原理及代码实现
深入理解IO流(第一篇)
Embedding two implementations of the torch code
阿里云-武林头条-建站小能手争霸赛
spark中的cache和checkpoint
spark中的bykey
pgaudit 的安装使用《postgresql》
【C语言】函数栈帧的创建和销毁详解
异常检测 IsolationForest 返回概率
Getting Started with Chrome Plugin Development
MySQL必知必会
CCF NOI 2022笔试题库
Shell脚本之一键安装mysql