【STL】——迭代器

本文详细介绍了STL中的迭代器,包括按照定义、常性以及功能的划分。迭代器按照定义分为输入迭代器、输出迭代器、双向迭代器、反向迭代器和随机访问迭代器。按常性划分有普通迭代器和常量迭代器。功能上,重点讨论了反转型迭代器,如reverse_iterator,以及插入型迭代器,如back_insert_iterator、front_insert_iterator和insert_iterator。此外,还提到了流式迭代器的应用,如istream_iterator和ostream_iterator,它们分别用于从输入流读取数据到容器和将容器数据输出到屏幕。
摘要由CSDN通过智能技术生成


迭代器的使用要加上头文件

# include<iterator>

1、迭代器之按照定义划分

  1. 输入迭代器(InputIterator):以内存为标准,输入就是从容器读取元素,向内存输入数据。容器中读取元素,输入迭代器只能一次一个元素向前移动即i++,直至容器末尾,要重读必须从头开始
  2. 输出迭代器OutputIterator:向容器中写入元素,输入迭代器只能一次一个元素的向前移动,要重写需要从头开始。
  3. 正向迭代器ForwardIterator:组合输入,输出迭代器的功能,保留在容器中的信息,重新读写不必从头开始
  4. 双向迭代器Bidirectional Iterator:从容器序列末尾到容器序列开头,只能i++移动。
  5. 随机访问迭代器RandomAccessIterator:可以直接访问到容器中的任意元素,可以向前向后跳转任意个元素。

标准库定义迭代子的层次结构,按这个层次,从上到下,功能越来越强:
在这里插入图片描述
STL容器支持的迭代器类别:

容器 迭代器类型
vector 随机访问
deque 随机访问
list 双向
set 双向
multiset 双向
map 双向
multimap 双向
stack 不支持迭代器
queue 不支持
priority_queuqe 不支持

2、迭代器之按常性划分

  1. 普通迭代器iterator:只能指向(迭代)普通容器对象
  2. 常量迭代器const_iterator:指向常容器对象

【举个栗子】

const vector<int> vec;//常容器对象
std::vector<int>* iterator it=vec.begin();//错误,有修改的风险
std::vector<int>::const_iterator it=vec.begin();//正确

3、迭代器之按功能划分

3.1反转型(反向型)迭代器

1、普通反转迭代器:reverse_iterator
功能:反向打印容器中的元素,虽然可以使用普通迭代器从后到前遍历打印,但是会存在问题,所以系统提供了一个反转迭代器:
在这里插入图片描述

template<typename Container>
void show(Container& con)
{
   
	typename Container::reverse_iterator it = con.rbegin();//指向后面,反向打印
	for (; it != con.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值