什么是迭代器?

简单来说,迭代器就是用来遍历容器的。

举个栗子:对于int型数组除了用下标访问,还可以通过指针访问,实际上迭代器就是对指针进行了封装。

通过代码了解一下,自己实现简单的迭代器:

#include#includeusingnamespacestd;voidshow(int*begin,int*end)//自己写的输出函数{while(begin!=end){cout<<*begin<<"";begin++;}}intmain(){intarr[]={1,2,3,4,5,68,5,2,14,5,8,4,5,8,2,5,4,5,65,9};intlen=sizeof(arr)/sizeof(arr[0]);//求出数组元素个数//指针访问int*begin=arr;int*end=arr+len;show(begin,end);//在容器中,begin,和end就是迭代器,底层封装了指针while(1);return0;}当我们把show函数编程模板函数之后,就可以输出任意类型的数组了:

template通过这个例子我们知道了,可以通过迭代器实现算法和容器的分离(show函数可以适配不同类型的数组)。所以说迭代器是一个很强的东西~大家好好学哈

STL标准库为每一种标准容器定义了一种迭代器类型,这意味着,不同容器的迭代器也不同,其功能强弱也有所不同。

常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器5种

输入迭代器:也有叫法称之为“只读迭代器”,它从容器中读取元素,只能一次读入一个元素向前移动,只支持一遍算法,同一个输入迭代器不能两遍遍历一个序列。

输出迭代器:也有叫法称之为“只写迭代器”,它往容器中写入元素,只能一次写入一个元素向前移动,只支持一遍算法,同一个输出迭代器不能两遍遍历一个序列。

正向迭代器:组合输入迭代器和输出迭代器的功能,还可以多次解析一个迭代器指定的位置,可以对一个值进行多次读/写。

双向迭代器:组合正向迭代器的功能,还可以通过++操作符向后移动位置。

随机访问迭代器:组合双向迭代器的功能,还可以向前向后跳过任意个位置,可以直接访问容器中任何位置的元素。

前面我们说过迭代器实质上就是封装的指针,那么怎么封装的呢?

还是看代码吧~

#includeusingnamespacestd;classMyIterator{public:MyIterator(int*ptr):_ptr(ptr){}int*operator++()//模仿指针前置++操作{_ptr++;return_ptr;}int&operator*()//模仿对指针的取值操作{return*_ptr;}booloperator!=(MyIteratorend)//模仿指针的比较{return_ptr!=end._ptr;}private:int*_ptr;};intmain(){intarr[]={1,2,3,4,5,68,5,2,14,5,8,4,5,8,2,5,4,5,65,9};intlen=sizeof(arr)/sizeof(arr[0]);//模拟迭代器访问MyIteratorbegin=arr;MyIteratorend=arr+len;for(begin;begin!=end;++begin){cout<<*begin<<"";}while(1);return0;}把指针封装到类里面,这样就可以轻松使用了,不用担心出现乱七八糟的问题。

但是,细心的同学会发现,操作的时候是不用指针了,直接操作迭代器就行,但是赋值的时候还是指针呀~这可咋解决呢?

不要着急,请听我娓娓道来~我们可以把赋值的指针再封装一层,直接返回一个迭代器。不过这里的任务就比较庞大了,

首先,需要把数组用类封装(自己实现简单的vector);

然后,把我们刚刚写好的迭代器类稍加修改,放到类中(迭代器是一个类中类);

最后,直接把数组的首地址,和最后一个元素的下一个位置分别封装成返回迭代器的begin()和end()函数

直接上代码:

voidTest(){Vectorvec(10);for(inti=0;i<10;i++){vec.push_back(i);}//能通过迭代器访问嘛?不能,要自己实现迭代器之后才能使用for(Vector::iteratorit=vec.begin();it!=vec.end();it++){cout<<*it<<"";}cout<

THE END
1.人工智能算法的分类与应用人工智能 (AI) 是当前科技领域的热门话题,其核心是各种算法的灵活运用。AI算法不仅实现了智能预测、分类,还在数据挖掘、自然语言处理和推荐系统等领域发挥着重要作用。接下来,我们将以科普的视角,带您深入了解 AI 的主要算法及其广泛应用。 一、监督学习 https://mp.weixin.qq.com/s?__biz=MzI3MzQ1NjMwOA==&mid=2247549220&idx=4&sn=25aa18da4b1e2824371e552b0ca3c8e6&chksm=eb214cffdc56c5e9303367ae4087102996613151dfa3c11fafe88950b683dbc8dadedd63bcaa&scene=27
2.机器学习基础:理解学习算法什么是机器学习 人类学习就是从经验中获得知识和技能,人们通过阅读、沟通、听讲、研究、实践获取经验,然后再对经验进行梳理、分析和研究,最后形成知识和技能。机器学习类似于人类学习,它也需要从外部获得经验,这里的经验是指输入到程序的经验数据,程序通过学习算法分析经验数据并从中学习,学习结果会形成一个模型(https://baijiahao.baidu.com/s?id=1818945621492846785&wfr=spider&for=pc
3.什么是迭代算法?详述迭代算法的原理?用C语言实现迭代算法。内附用C语言实现迭代算法。内附完整代码。 大家好,我是贤弟! 一、什么是迭代算法? 迭代算法,也称为迭代法,是一种解决问题的基本方法之一。它通过对一个问题进行多次重复计算,每次计算都会接近问题的解,直到达到预定精度或给定次数为止。 迭代算法在求解方程、优化问题、模拟系统等领域中广泛应用。https://cloud.tencent.com/developer/news/1285328
4.优化算法笔记(一)优化算法的介绍优化算法也是这样一种过程,是一种根据概率按照固定步骤寻求问题的最优解的过程。与常见的排序算法、寻路算法不同的是,优化算法不具备等幂性,是一种概率算法。算法不断的迭代执行同一步骤直到结束,其流程如下图。 优化算法流程图 1.1.1什么是等幂性? 等幂性即对于同样的输入,输出是相同的。 https://www.jianshu.com/p/82d5b30e528d
5.迭代优化理论什么意思理想股票技术论坛迭代优化理论是指通过多次迭代计算和优化的方法来解决复杂问题的一种理论。迭代优化算法和迭代优化方法是在迭代优化理论的基础上发展起来的具体实现方式,通过不断调整参数和优化目标函数,以寻找最优解或近似最优解。这些方法在各个领域都有广泛应用,包括机器学习、数据分https://www.55188.com/tag-03991762.html
6.高中信息科技教学中的学生创新素养培养内容1.迭代算法式的思维培养 汉语词典对“迭代”的解释是更相代替和轮换的意思。迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。迭代思想,已经由一种算法逐步升级发展为一种方法、理念和思维模式,迭代运用于创新思维https://tpd.xhedu.sh.cn/cms/app/info/doc/index.php/88528
7.什么叫迭代算法?置换法;迭代法;递归树法;主方法什么叫迭代算法? 迭代算法是一种通过反复重复某些步骤来逐步逼近问题的解的算法。与递归(通过函数自身调用解决问题)不同,迭代算法通常通过显式的循环结构(例如for或while循环)来实现。 简单来说,迭代算法从一个初始解(或初始状态)开始,通过一系列的迭代步骤不断改进解,直到满足某种终止条件(比如达到目标精度或者达到https://blog.csdn.net/chenby186119/article/details/144104649
8.中国科普博览1959-61年:矩阵特征值的QR算法,也是一个和线性代数有关的算法,发明者为来自英国伦敦的J.G.F.Francis。 计算特征值是矩阵计算的最核心内容之一,传统的求解方案涉及到高次方程求根,当问题规模大的时候十分困难。QR算法把矩阵分解成一个正交矩阵与一个上三角矩阵的积,和前面提到的Krylov方法类似,又是一个迭代算法,http://www.kepu.net.cn/blog/zhangjianzhong/201903/t20190327_475674.html
9.国际爱鸟日丨为北归候鸟“保驾护航”我们做了这些事仿真鸟潜入栖息地会有什么偶遇? 为了能够更多地了解珍稀鸥类北迁时的行为表现,总台央视新闻频道报道团队尝试3D打印仿真鸟潜入鸟群。 西安交通大学机械工程学院副教授李宏伟介绍,他们查找了大量的资料,发现黑嘴鸥和鸽子在形态和体态上具有相似性。于是以鸽子为原型进行了初次的建模尝试,经过十多次的迭代,https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=10435798686169121534&track_id=e3c58c30-148c-4dac-905a-48389f2e1886
10.深度学习中迭代轮是什么意思迭代什么意思啊迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。 迭代,重复一定的算法,达到想要的目的。数学上二分法,牛顿法是很好的迭代例子 function iteration(x){ https://blog.51cto.com/u_16099247/9445490
11.python中的函数递归和迭代原理解析python这篇文章主要介绍了python中的函数递归和迭代原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、递归 1、递归的介绍 什么是递归? 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明https://www.jb51.net/article/174213.htm
12.《递归算法分析》课件设计(公开).ppt---算法不容易优化 对于频繁使用的算法,或不具备递归功能的程序设计语言,需要把递归算法转换为非递归算法。 1、递归的概念 2、递归算法的设计方法 3、递归算法的执行过程 4、递归算法的效率分析 5、递归算法的非递归化处理 采用迭代算法 尾递归的消除 利用栈消除任何递归 如果一个递归过程或递归函数中递归调用语句https://max.book118.com/html/2018/1220/5342343122001341.shtm