1. 营销策划师首页
  2. 产品文案策划

迭代指针和迭代器有什么区别?指针的迭代器五大种类及功能解析

迭代指针和迭代器有什么区别?指针的迭代器五大种类及功能解析什么是迭代器?指针和迭代器有什么区别呢?指针针是C语言里面就有的东西,而迭代器是C++里面才有的所以,对于这些容器我们不能单纯地使用指针作为迭代器,而是针对每一种容器,都会有专门配对的迭代器。(迭代器的类型就为container::iterator)(container是某个STL容器)

什么是迭代器?

先说说它是干嘛的吧!迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。没错!这和访问数组这个序列的指针一样,因为数组范围内的指针就是迭代器的一种。

指针和迭代器有什么区别呢?

1.指针针是C语言里面就有的东西,而迭代器是C++里面才有的

2.指针用起来灵活,效率高。迭代器功能更丰富一些

3.指针通常用来访问的是序列的元素,但不是所有的容器都会在连续的内存空间上保存数据。所以,对于这些容器我们不能单纯地使用指针作为迭代器,而是针对每一种容器,都会有专门配对的迭代器。

4.指针用起来灵活,效率高。迭代器功能更丰富一些,c++的stl里面很多算法都是基于迭代器的,一部分算法的参数可以传递指针作为迭代器使用。

迭代器怎么使用?

对于所有的迭代器,它们的使用方法和指针一样,比如自增(++),解引用(*)。除了数组以外,在大部分的容器中都会提供成员函数beget()(在类中创建,类是C++中对于C语言中的结构体的延伸),用来获取容器开始位置的迭代器,会提供成员函数end(),用来获取容器结束位置的迭代器。

如何理解begin()和end()这两个返回值为迭代器的函数?

begin()相当于数组中首元素地址迭代,end()相当于末元素后一位置的地址(首元素地址+元素数量)

迭代器五大种类及功能解析

InputIterator(输入迭代器):只要求支持拷贝、自增和解引访问。

OutputIterator(输出迭代器):只要求支持拷贝、自增和解引赋值。

ForwardIterator(向前迭代器):同时满足InputIterator和OutputIterator的要求。

BidirectionalIterator(双向迭代器):在ForwardIterator的基础上支持自减(即反向访问)。

RandomAccessIterator(随机访问迭代器):在BidirectionalIterator的基础上支持加减运算和比较运算(即随机访问)

迭代_迭代学习_神经网络训练迭代次数

使用迭代器*样例展示

vect是一种数据结构—我们熟悉的数组(亦称列表)

用vect::iterator定义迭代器iter

迭代器的类型就为container::iterator)(container是某个STL容器)

arr.begin()是返回值指向首元素的为迭代器的函数

更多有关迭代器的函数请看下一栏

常用四大返回值为迭代器的函数

1.begin()/cbegin()

迭代学习_迭代_神经网络训练迭代次数

返回指向首元素的迭代器,其中*begin=front。

2.end()/cend()

返回指向数组尾端占位符的迭代器,注意尾端占位符是没有元素的,不能进行解引用。

3.rbegin()/crbegin()

返回指向逆向数组的首元素的逆向迭代器,可以理解为正向容器的末元素。

4.rend()/crend()

返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素。 使用返回值为迭代器的函数*样例展示

sort()和reverse()都是STL提供的算法函数

可以大大提高写代码的效率哦!

☆刚刚学习的迭代迭代,怕忘记所以来做的笔记,欢迎大家一起交流~

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息