下载此文档

三十分钟掌握STL.pdf.pdf


文档分类:办公文档 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
12-10-5 三十分钟掌握STL
三十分钟掌握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中的对象。函数本身与他
们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的
任何数据结构上使用。
头文件
为了避免和其他头文件冲突, 。为了包含标准
的string类,迭代器和算法,用下面的指示符:
#include <string>
#include <iterator>
./~yhf/ 1/22
12-10-5 三十分钟掌握STL
#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++的指针也是一种迭代器。但是,迭代器

三十分钟掌握STL.pdf 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人lxydx
  • 文件大小0 KB
  • 时间2015-11-12
最近更新