博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容器和算法2 - C++快速入门48(完)
阅读量:5325 次
发布时间:2019-06-14

本文共 1386 字,大约阅读时间需要 4 分钟。

容器和算法2

 

让编程改变世界

Change the world by program


 

迭代器

  上节课我们的栗子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题。 就是在遍历向量里的各个元素时,我们仍把它视为一个C++数组来对待。   刚好我们的向量容器允许使用下表操作符来访问它的各个元素:names[x] 但是如果想改用另一种不提供此方法访问的容器(比如栈),我们就不得不对程序做很多修改才得以实现。   因为对容器里的各个元素进行遍历是一种十分常见的任务,所以应该有一种标准的方式来做这件事,对吧? C++标准库提供的各种迭代器(iterator)就是这么来的。   迭代器是一种功能非常有限却非常实用的函数,提供一些基本操作符:*、++、==、!=、=。 迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力。   因为迭代器的功能是如此的基本,所以标准库里的每一种容器都支持。 通过使用迭代器,当在程序里改用另一种容器的时候就用不着修改那么多的代码了。   每一种容器都必须提供自己的迭代器,事实上每种容器都将其迭代器以嵌套的方式定义于内部。 因此各种迭代器的接口相同,型号却不同,这就是所谓泛型程序设计的概念:所有操作行为都使用相同接口,虽然它们的具体实现不同。  
修改,使用迭代器。  

算法

  算法,恩,为了让大家体会到算法的无比神奇,小甲鱼先给大家讲一个小故事吧,在很久很久以前。。。。。。 回顾我们刚才对向量示例程序的修改,别的先不说,用来遍历向量元素的循环比原来复杂了许多,可代码的行为还是老样子。   迭代器的真正价值体现在它们可以和所有的容器配合使用,而使用迭代器去访问容器元素的算法可以和任何一种容器配合使用。 小甲鱼将带大家再修改一下这个栗子,从而演示算法的威力:在输出该容器里的元素之前,先按字母顺序对它们进行排序。   对数据进行排序对人类来说好像只是个简单的问题,但要想高效率地完成这个任务其实并没有想象中那么简单。 人们已经对排序问题总结出许多不同的算法:冒泡排序、堆排序、快速排序等等。   每种算法都有它们的优点和缺点,而只有那些最简单的算法才比较容易以我们个人之力实现。 所幸的是,C++标准库包含着一个经过全面优化的排序算法,它的处理速度也非常理想。   要想使用这个算法,只需先把algorithm文件包含到源文件里:#include <algorithm> 然后再像下面这样调用sort()方法就可以了:

std::sort(beginIterator, endIterator);

   

结束语

  结束?!不,好戏才刚刚开始! 在《数据结构和算法》系列教程里,小甲鱼会从原理层面来带大家认识更多的数据结构和算法,大家可以用我们学到的知识把它们封装成容器!   敬请关注,敬请收看! 灰常感谢大家对小甲鱼的支持,大家后会有期! [buy]   [/buy] [Downlink href='http://urlxf.qq.com/?vuMn6ve']视频下载[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LWVAKIMYGDYF']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/08/19/3847216.html

你可能感兴趣的文章
使用Eclipse构建Maven的SpringMVC项目
查看>>
ajax json 动态传值
查看>>
[Xamarin] 製作Options Menu、Intent 呼叫網址和Market (转帖)
查看>>
bnu 52037 Escape from Ayutthaya
查看>>
C#是类型安全的
查看>>
c++网络编程错误(WSAStartup)
查看>>
在线图床工具的使用 https://sm.ms/
查看>>
MySQL5.7 error log时间显示问题
查看>>
Java学习1
查看>>
ThreadLocalDemo
查看>>
jquery发起get/post请求_或_获取html页面数据
查看>>
编程语言python
查看>>
Cordova学习笔记之入门
查看>>
C# winform 设置WebBowser 内核版本
查看>>
Uint8Array 对象
查看>>
ResGen.exe”已退出,代码为2 问题处理
查看>>
TopFreeTheme精选免费模板【20130629】
查看>>
【转】C++ 类中的static,const,及引用类型的初始化
查看>>
find命令
查看>>
2019ICPC西安邀请赛 - B. Product - 数论
查看>>