欢迎来到天天文库
浏览记录
ID:52518703
大小:36.55 KB
页数:12页
时间:2020-03-28
《《高级语言C++程序设计(第二版)》附录C 标准模板库(STL).pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、附录C标准模板库(STL)标准模板库(StandardTemplateLibrary,STL)是美国国家标准化组织和国际标准化组织于98年制定的标准,其最主要与最常用的两部分为容器类(containerclasses)以及算法库(algorithmlibrary)。C.1概述首先回想一下第五章所介绍的自定义函数和标准库函数的系统实现方式与方法以及用户程序中如何对这两种函数来进行使用:1)程序中可直接使用(调用)系统预定义的标准库函数(如,sin,abs等),但要求在调用前使用编译预处理指令incl
2、ude将对应的头文件包含进来。2)用户自定义函数与系统预定义的标准库函数的不同点在于,自定义函数的函数名、参数个数、函数返回值类型以及函数所完成的功能等都完全由用户程序来规定(指定);而系统预定义的标准库函数则是一切都事先预定义好的,相当于是一个软件组件。与自定义函数和标准库函数两者的关系及其使用方式相类似,C++不但允许通过用户程序来自定义模板(第九章内容),而且还提供了标准模板库(把最常用的一大批模板及其对它们进行处理的“算法”都定制为标准组件而包含在其中),从而可节省用户的编程与调试时间,提
3、高软件产品的使用安全性以及整体效率。使用方式和方法基本上与函数相类似:1)程序中可直接使用(调用)系统预定义的标准模板库中的各模板类(如,vector、list等标准模板类),但要求在调用前使用编译预处理指令include将对应的头文件包含进来(如通过使用“#include”等)。2)用户自定义模板与标准库中系统预定义模板的不同点在于,自定义模板的模板名、模板参数个数、模板所完成的功能以及其中的每一成员函数等都完全由用户程序来规定(指定);而系统预定义的各模板则是一切都事先预定义好
4、的,相当于是一个软件组件。本附录只对最常用的容器类以及算法库进行简单介绍,以使读者对标准模板库的使用方法与技术有一个大致的了解,期望能起到抛砖引玉的作用,至于更细致的部分,可参看系统提供的有关文档资料与使用说明。容器类是一批相关的标准类模板的总称,其中所包含的最基本的7个标准类模板是:vector(向量)、list(列表)、deque(双端队列)、map(映像)、multimap(多重映像)、set(集合),以及multiset(多重集合)。另外,在这些容器类上作一些扩充(或改造)后,系统又提供了
5、如下另一些也经常使用的标准类模板:queue(队列)、stack(栈)、priority_queue(优先级队列)等(注:某些不同的C++编译器可能还会提供更多的其他标准类模板)。如同其名字,容器实质上就是用来装载物品的储存器。STL容器也正是用来存放各种类型的具体对象的。上述所列容器(类模板)中,除了map、multimap、set和multiset之外,其他的容器均为顺序容器,即是说,在其中存储的对象均是有序的,用户可以在指定位置插入或存取对象;而与集合以及映像有关的那4个类模板则属于非顺序容
6、器,它们并不具有顺序容器的特征。372算法库中则包括了各种基本算法,如,sort,copy,search,reverse等。通过使用算法,可对容器中的对象进行诸如查找、排序、拷贝、置换等各种不同的操作。C++标准算法库中共提供了多达数十种的不同算法,而这些算法主要通过一种称为迭代子(iterator)也有称为游标的面向对象的泛型指针来操作(遍历容器中的不同对象),以达到对各对象进行处理的目的。下面通过两个实例来叙述对容器类以及对算法库的基本使用方法与技术。例1.对标准模板类vector(为一种容器
7、类)的使用#include//不同于,见两个例子之后的说明#include//由于要使用标准类模板vectorusingnamespacestd;//使用名字空间stdvoidmain(){inta[10];//int型数组afor(inti=0;i<10;i++)a[i]=i;int*ip=a;//ip为指针,指向int型数据while(ip!=a+10)cout<<*ip++<<"";cout<v(1
8、0);//使用实参类型int来实例化标准类模板vector//并说明类对象v,且分配大小为10的空间cout<<"v.size="<::iteratoritr=v.begin();//itr“指针”指向容器中的首元while(itr!=v.end())//end返回一指针,指向末元(之下一位置)cout<<*i
此文档下载收益归作者所有