第13章 标准模板库(STL).ppt

第13章 标准模板库(STL).ppt

ID:61741232

大小:185.50 KB

页数:37页

时间:2020-02-06

第13章  标准模板库(STL).ppt_第1页
第13章  标准模板库(STL).ppt_第2页
第13章  标准模板库(STL).ppt_第3页
第13章  标准模板库(STL).ppt_第4页
第13章  标准模板库(STL).ppt_第5页
资源描述:

《第13章 标准模板库(STL).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第13章标准模板库(STL)STL,即StandardTemplateLibrary,不是面向对象的编程,而是一种新的编程模式:泛型编程(GenericProgramming)。STL是C++标准库的组成部分,STL是很庞大复杂的系统,单单就STL就可写出厚达千页的技术书籍,所以,本章不可能做到面面俱到,重点在于介绍泛型编程的思想和本质,介绍一些常用的方法,为初学者学习STL提供一些感性认识,起到抛砖引玉的作用。STL是一项比较新的技术,VC6是微软公司比较老的一款编译器,其对STL的支持并不是太好,因此,在本章学习时,推荐采用较新的VC2005甚至是VC2

2、008编译器。13.1理解STLSTL库是用摸板(template)写出来的,在第12章中也已经提及:模板是STL库的基础所在,大致来说,STL是由三部分组成的:容器(container)迭代器(iterator)容器适配器(Adapter)算法(algorithm)容器、容器适配器和迭代器都是用类摸板实现的,迭代器用于遍历容器中的每一个元素,算法用于操作数据。13.1.1容器如果没有STL的支持,在处理一些复杂问题时,要自行设计存储模式,如数组管理,插入删除操作等,这不但很繁琐,而且bug频出,是程序出问题最多的地方。STL运用模板类库机制,为数据存储,查

3、找和其他操作提供了一整套方案,大大提高了程序的正确性,不仅如此,类库对常用的很多操作进行了优化处理,大大提高了程序的效率。容器即是可容纳一些数据的模板类,STL中有vector,list,deque,set,map,multimap和multiset等容器。13.1.2适配器适配器就是Interface(接口),对容器、迭代器和算法进行包装,但其实质还是容器、迭代器和算法,只是不依赖于具体的标准容器、迭代器和算法类型,容器适配器可以理解为容器的模板,迭代器适配器可理解为迭代器的模板,算法适配器可理解为算法的模板。常见的容器适配器有stack、queue和pr

4、iority_queue。13.1.3迭代器在有的专业书籍中,迭代器也称游标,可以将迭代器初步理解为广义指针,迭代器和指针功能很像,迭代器是通过重载一元的”*”和”->”来从容器中间接地返回一个值。迭代器有5种,依次为:随机访问迭代器(RandomAccessIterator)、双向迭代器(BidirectionalIterator)、前向迭代器(ForwardIterator)、输入迭代器(InputIterator)和输出迭代器(OutputIterator),稍后会有详细的介绍。13.1.4算法STL包含了很多对容器进行处理的函数,它们的处理思路大体相

5、同:使用迭代器来标识要处理的数据或数据段、以及结果的存放位置,有的函数还作为对象参数传递给另一个函数,实现数据的处理。13.2使用序列式容器容器是STL的基础,容器有序列式容器(sequentialcontainer)和关联式容器(associativecontainer)之分。总体来说,序列式容器会强调元素的次序,依次维护第一个元素、第二个元素……,直到最后一个元素,面向序列式容器的操作主要是迭代操作,本节来讨论下序列式容器vector、list和deque的用法,以及序列式容器的共同操作。13.2.1序列式容器的创建和元素的访问要使用序列式容器,必须包含

6、相关的头文件,vector、list以及deque分别对应于:#include#include#include首先看一下如何创建序列式容器的对象,大体有以下几种方式:(1)创建空的容器,此时容器中的元素个数为0。(2)产生特定大小的容器,,此时容器中的元素被创建,但未被显式初始化,编译器使用默认值为元素隐式初始化,像int、float和double等内建的数据类型会被初始化为0,对于类对象元素,将调用其无参构造函数(用户定义的或编译器缺省提供的)或每个参数都有默认值的构造函数。(3)在(2)的基础上更进一步,创建特定

7、大小的容器,并且为其中的每个元素指定初始值,此时在元素多少的参数后增加一个参数。(4)根据已有同类型的容器创建新容器,并将其中的元素完全复制过来,设obV1、obL1和obD1都是现成的容器,里面存储的数据均为int型,则可用下述命令创建新容器。(5)通过一对迭代器(可暂时理解为指针),以使编译器决定元素的个数和出值,这对迭代器用以标识一组元素区间。13.2.2所有容器都支持的特征中,“obL.begin()”返回的是指向容器第一个元素的迭代器,这是所有容器(容器和容器适配器)都支持的特征,此外,还有如所示的所有容器都支持的特征,其中ob、ob1和ob2是容

8、器对象名:13.2.3序列式容器中元素的插入和删除在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。