C++ iterator小记录

本文介绍了C++中的迭代器,作为连接算法和容器的桥梁,详细阐述了五种类型的迭代器及其特性:随机访问、双向、单向、输入和输出。讨论了迭代器失效的情况,特别是插入和删除操作可能导致的问题。同时,提到了迭代器适配器如rbegin、rend、insert_iterator和iostream_iterator,重点解析了insert_iterator在复制操作中的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、iterator
iterator可以理解为是一种泛化的指针,其在某些方面类似于下标操作,但是很多容器中我们无法使用下标对容器中的元素进行访问,这时候就需要使用到迭代器。为了更好的使用容器,迭代器起到了连接算法与容器之间的桥梁的作用,当我们使用算法时,需要知道当前算法需要的传来的参数的各种类型,这时候就需要用到iterator的属性来告诉我们这些类型。
iterator有五个类型五种固有属性
五种类型:random access ,bidirection,forward,input,output
random access为随机访问,即元素存放在连续空间,支持++ – +n -n的操作
bidirection为双向访问,使用在list,RB_tree实现的数据结构中,其中也重载了自增自建运算符,但是因为其结构并非连续内存,因此其中实现是利用容器内部指针完成。
forward为单向访问,其相比bidirection只能够完成向后访问,并不能前向访问,使用在forward_list 即单向链表中。
input为输入,其只能读取不能完成写操作,且只能一次读取操作
output为输出,其只能写入不能够完成读取,同样只能写入一次

iterator的五种固有属性iterator_traits
其固有属性就是所有迭代器都必须要定义出来的属性ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值