1 / 15
文档名称:

三十分钟掌握STL.pdf

格式:pdf   页数:15页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

三十分钟掌握STL.pdf

上传人:xxj16588 2015/6/5 文件大小:0 KB

下载得到文件列表

三十分钟掌握STL.pdf

相关文档

文档介绍

文档介绍:三十分钟掌握 STL
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,
所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法
在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,
浪费我两个晚上。译者:kary contact:karymay@ STL 概述 STL 的一个重
要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得
STL 变得非常通用。例如,由于 STL 的 sort()函数是完全通用的,你可以用它来
操作几乎任何数据集合,包括链表,容器和数组。要点 STL 算法作为模板函数
提供。为了和其他组件相区别,在本书中 STL 算法以后接一对圆括弧的方式表
示,例如 sort()。 STL 另一个重要特性是它不是面向对象的。为了具有足够通用
性,STL 主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP 的三
个要素。你在 STL 中找不到任何明显的类继承关系。这好像是一种倒退,但这
正好是使得 STL 的组件具有广泛通用性的底层特征。另外,由于 STL 是基于模
板,内联函数的使用使得生成的代码短小高效。提示确保在编译使用了 STL 的
程序中至少要使用-O 优化来保证内联扩展。STL 提供了大量的模板类和函数,
可以在 OOP 和常规编程中使用。所有的 STL 的大约 50 个算法都是完全通用的,
而且不依赖于任何特定的数据类型。下面的小节说明了三个基本的 STL 组件: 1)
迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器指定 list 或
vector 中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是
一种迭代器。但是,迭代器也可以是那些定义了 operator*()以及其他类似于指针
的操作符地方法的类对象。 2)容器是一种数据结构,如 list,vector,和 deques ,
以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。
3)算法是用来操作容器中的数据的模板函数。例如,STL 用 sort()来对一个 vector
中的数据进行排序,用 find()来搜索一个 list 中的对象。函数本身与他们操作的
数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据
结构上使用。头文件为了避免和其他头文件冲突, STL 的头文件不再使用常
扩展。为了包含标准的 string 类,迭代器和算法,用下面的指示符: #include
<string> #include <iterator> #include <algorithm> 如果你查看 STL 的头文件,你可
以看到象 和 这样的头文件。由于这些名字在各种 STL 实现
之间都可能不同,你应该避免使用这些名字来引用这些头文件。为了确保可移植
性, 后缀的文件名。表 1 列出了最常使用的各种容器类的头文
件。该表并不完整,对于其他头文件,我将在本章和后面的两章中介绍。表 1.
STL 头文件和容器类#include Container Class <deque> deque <list> list <map>
map, multimap <queue> queue, priority_queue <set> set, multiset <stack> stack
<vector> vector, vector<bool> 名字空间你的编译器可能不能识别名字空间。名字
空间就好像一个信封,将标志符封装在另一个名字中。标志符只在名字空间中存
在,因而避免了和其他标志符冲突。例如,可能有其他库和程序模块定义了 sort()
函数,为了避免和 STL 地 sort()算法冲突,STL 的 sort()以及其他标志符都封装
在名字空间 std 中。STL 的 sort()算法编译为 std::sort(),从而避免了名字冲突。
尽管你的编译器可能没有实现名字空间,你仍然可以使用他们。为了使用 STL,
可以将下面的指示符插入到你的源代码文件中,典型地是在所有的#include 指示
符的后面: using namespace std; 迭代器迭代器提供对一个容器中的对象的访问
方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的
指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具
有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同
的创建方法。程序可能把迭代器作为一个

最近更新

超高分辨率相机的研发与应用 28页

交通规划与城市可持续发展 31页

立秋到了的作文(6篇) 49页

感恩节快乐的短句子44条 51页

长跑的加油稿 16页

关于学生自我介绍信800字模板 12页

环境风险评估与管理技术的研究与应用 30页

有关运动会日记6篇 45页

我的好伙伴6篇 46页

分别的作文6篇 44页

幼儿园六一最火的活动方案及流程 71页

大学开学典礼秋季新生代表上台致辞 60页

高碘化合物在杂环合成方法学中的应用的开题报.. 2页

高模高强Mg-RE-Si合金的设计与制备的开题报告.. 2页

高校教务管理信息系统的设计与实现的开题报告.. 2页

高新技术企业高绩效工作系统与企业绩效关系研.. 2页

高性能锂离子电池Si,Ge负极材料的设计与研究的.. 2页

高帧频CMOS相机数据远程采集系统设计的开题报.. 2页

高家沟--青阳岔地区长2油层组沉积相及储层特征.. 2页

高压氧预处理与富氢生理盐水治疗对皮瓣缺血再.. 2页

高分子无机纳米复合材料的制备及其性能研究的.. 2页

高中生英语阅读焦虑的实验研究及缓解策略的开.. 2页

高中生数学课堂参与现状及影响因素研究开题报.. 2页

高中地理学习策略指导及训练方式研究的开题报.. 2页

《同分母分数加、减法》教学设计(通用6篇) 1页

江西景德镇的导游词13篇 27页

申请行政听证申请书模板7篇 10页

太阳能空气能热水工程施工方案 16页

高速接缝式自动包装机 59页

3、我也能发明活动方案 2页