STL基础(三)
2016-07-10 00:18
197 查看
Iterator 迭代器
能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来。
重载了*,++,==,!=,=运算符,用以操作复杂的数据结构。
容器提供迭代器,算法使用迭代器。
迭代器的分类:
不同容器提供自己的迭代器,所以不同迭代器具有不同的能力。
这幅图与之前博客所说的一致。
Iterator Adaptor (迭代器适配器)
提供和Iterator相同的接口,但是改变内部的实现方法。
分类:
insert iterator
stream iterator
reverse iterator
注: 接口还是迭代器的接口,前缀描述了迭代器的内部实现。
STL 提供的另外两种容器queue,stack,其实都只不过是一种Adaptor,它们简单地修饰deque的界面而成为另外的容器类型。
Algorithm 算法
泛型算法通则:
所有算法的前两个参数都是一对Iterators:[first,last),用来指出容器一个范围内的元素。
每个算法的声明中,都表明出他所需要的最低层次的Iterator类型。
大部分算法都可以用Function Object来更改准则。
能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来。
重载了*,++,==,!=,=运算符,用以操作复杂的数据结构。
容器提供迭代器,算法使用迭代器。
迭代器的分类:
不同容器提供自己的迭代器,所以不同迭代器具有不同的能力。
这幅图与之前博客所说的一致。
Iterator Adaptor (迭代器适配器)
提供和Iterator相同的接口,但是改变内部的实现方法。
分类:
insert iterator
stream iterator
reverse iterator
注: 接口还是迭代器的接口,前缀描述了迭代器的内部实现。
STL 提供的另外两种容器queue,stack,其实都只不过是一种Adaptor,它们简单地修饰deque的界面而成为另外的容器类型。
Algorithm 算法
泛型算法通则:
所有算法的前两个参数都是一对Iterators:[first,last),用来指出容器一个范围内的元素。
每个算法的声明中,都表明出他所需要的最低层次的Iterator类型。
大部分算法都可以用Function Object来更改准则。
vector< int > ivec; ivec.push_back(3); ivec.push_back(2); ivec.push_back(1); vector< int > ivec2(ivec.begin(),ivec.end()); sort(ivec.begin(),ivec.end(),great<int>()); sort(ivec.begin(),ivec.end(),less<int>());
相关文章推荐
- 283. Move Zeroes--LeetCode Record
- 廉价/独立磁盘冗余阵列RAID
- 大数据工程师之路
- R入门小练习(1)
- 作为怀孕的亲历者,你觉得最值得分享的经验或者技巧是什么?
- Extjs与Struts2交互,返回JSON数据的两种实现方式
- 18位身份证号验证算法的原理以及C#实现和在管理系统的应用
- Extjs与Struts2交互,返回JSON数据的两种实现方式
- Java网络编程学习
- activity变成Dialog的样式设置
- 简单提升编译速度的一个方法
- 为什么稀疏自编码器很少见到多层的?
- 2016程设期末伪题解
- Android Xutils框架使用之BitmapUtils
- 1038. Recover the Smallest Number (30)
- 使用LaTex为IEEEtran文件插入图片 此博文包含图片
- 【转载】nedmalloc结构分析
- github上可供新手阅读和玩耍的java项目有哪些??
- NginxWithPHP7
- Wifi密码破解与局域网抓包监听(小白--纯工具版)