标准模板库STL的.ppt

  1. 1、本文档共128页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标准模板库STL的

第12章 标准模板库STL 标准模板库(Standard Template Library,简称STL)是ANSI/ISO C++最有特色、最实用的部分之一。 标准模板库STL主要包括: 容器(Containers) 算法(Algorithms) 迭代器(Iterators) 函数对象(Function Objects) 适配器(Adaptors) 内存配置器(Allocators) 标准模板库STL主要由6大组件组成: (1)容器(Containers)。包括各种基本数据结构的类模板。 STL容器部分主要由头文件vector、list、deque、set、 map、stack和queue组成。 (2)算法(Algorithms)。包括各种基本算法,如比较、交换、查找、排序、遍历操作、复制、修改、移除、反转、合并等等。 STL算法部分主要由头文件algorithm和numeric组成。 (3)迭代器(Iterators)。迭代器是面向对象版本的指针,如同指针可以指向内存中的一个地址,迭代器可以指向容器中的一个位置。 STL的每一个容器类模板中,都定义了一组对应的迭代器类,用以存取容器中的元素。这样,在STL中迭代器就将算法和容器联系起来了,通过迭代器,算法函数可以访问容器中指定位置的元素,而无需关心元素的具体类型。 STL迭代器部分主要由头文件utility和iterator组成。 (4)函数对象(Function Objects)。一种行为类似于函数的class,实现技术上是一个改写了“call operator()”的class。 STL 提供 15 个预定义的 Function objects。头文件functional中定义了一些类模板,用以声明函数对象。 STL最主要的一个特点:数据结构和算法的分离。 容器是像链表,向量、栈、队列之类的数据结构,并按类模板方式提供; 算法是函数模板,用于操作容器中的数据。 由于STL以模板为基础,所以能用于任何数据类型和结构。 实际上,可以认为STL是以容器和迭代器为基础的一种泛型算法(Generic Algorithms)库。 所谓泛型(Genericity)是指能够在多种数据类型上进行操作,在泛型化程序设计思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。 12.2 容器类 容器类是容纳一组对象或对象集的类。 STL中容器有顺序容器(Sequence Container or Sequential Container)和关联容器(Associative Container)。 顺序容器组织成对象的有限线性集合,所有对象都是同一类型。STL中三种基本顺序容器是:向量(vector)、线性表(list)、双向队列(deque)。 关联容器提供了基于Key的数据的快速检索能力。元素被排好序,检索数据时可以二分搜索。STL有四种关联容器:集合(set)、多元集合(multiset)、映射(map)、多元映射(multimap)。当一个Key对应一个Value时,可以使用集合和映射;若对应同一Key有多个元素被存储时,可以使用多元集合和多元映射。 12.2.1 顺序容器 1.vector 向量vector是用于容纳不定长线性序列的容器,提供对序列的快速随机访问(也称直接访问)。 vector 的数据安排以及操作方式,与C++中的数组非常相似。 区别在于:C++中的数组是固定大小的,分配给C++数组的空间数量在数组的生存期内是不会改变的。 向量vector是动态结构,它的大小不固定,可以在程序运行时增加或减少。 vector中的元素在内存是连续存储的,可以直接访问。 包含vector类的头文件是vector。所以,如果要在程序里使用向量容器,就要在程序中包含下面语句: #include vector 在定义向量类型对象时,必须指定该对象的类型。 例如: vectorint in

您可能关注的文档

文档评论(0)

ayangjiayu4 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档