- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件
□ 标准模板库STL
1 基本概念
2 STL容器
3 STL算法
;□ STL主要内容
? STL:组件、容器、iterator
? STL容器:
vector(向量),list,stack,queue
? STL算法:搜寻、排序、拷贝、数值运算
;□ STL主要内容
? STL是C++标准程序库的核心,深刻影响了标准程序库的整体结构。
? STL是泛型(generic)程序库,利用先进、高效的算法来管理数据。
? STL由一些可适应不同需求的集合类,以及在这些数据集合上操作的算法构成。
? STL内的所有组件都由模板(template)构成,其元素可以是任意类型。
;□ C++
? C++ 语言的核心优势之一就是便于软件的重用。
? C++中有两个方面体现重用:
1. 面向对象的思想:继承和多态,标准类库。
2. 泛型程序设计(generic programming) 的思想:模板机制,以及标准模板库 STL。
;□ 泛型程序设计
? 泛型程序设计,简单地说就是使用模板
的程序设计法。
将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什么样的对象,则都不必重新实现数据结构,重新编写算法。
;□ 泛型程序设计例子
? 假如设计一个求两参数最大值的函数,在实践中我们可能需要定义四个函数:
int max ( int a , int b )
{ return ( a b ) ? a , b ; }
long max ( long a , long b )
{ return ( a b ) ? a , b ;}
double max ( double a , double b )
{ return ( a b)? a , b ; };□ 泛型程序设计例子
? char max ( char a , char b )
{ return ( a b ) ? a , b ;}
?这些函数几乎相同,唯一的区别就是形参类型不同。
? 若一个程序的功能是对某种特定的数据类型进行处理,则可以将所处理的数据类型说明为参数,以便在其他数据类型的情况下使用,这就是模板的由来。
;□ C++模板
? 所谓模板是一种使用无类型参数来产生一系列函数或类的机制。
? 模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。
? 通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免需要为每一种数据类型产生一个单独的类或函数。
;□ 模板分类
? 函数模板(function template)
是独立于类型的函数。
可产生函数的特定版本。
? 类模板(class template)
跟类相关的模板,如vector。
可产生类对特定类型的版本,如vectorint。
;□求最大值模板函数实现
? 求两个数最大值,使用模板
template class T
T max(T a , T b){
return ( a b ) ? a , b; }
说明:template 模板形参表
返回值类型 函数名(模板函数形参表)
{ //函数定义体 }
;□ STL组件
?容器(Container)-管理某类对象的集合。
?迭代器(Iterator)-在对象集合上进行遍历。
?算法(Algorithm)-处理集合内的元素。
;□ STL容器
? 容器的定义:某种类型对象的集合。也可理解为常用抽象数据类型的分类。
? 容器是可以用于存放各种类型的数据(基本类型的变量,对象等)的数据结构。
? STL容器分为序列式容器、关联式容器和容器适配器。
;□ STL容器
? 序列式容器 ?
vector:后部插入/删除,直接访问。 deque:前/后部插入/删除,直接访问。 list:双向链表,任意位置插入/删除。
? 关联容器
set:快速查找,无重复元素。 multiset :快速查找,可有重复元素。 map:一对一映射,无重复元素,基于关键字查找。
;□ STL容器
? multimap :一对一映射,可有重复元素,基于关键字查找。
? 容器适配器
stack:LIFO queue:FIFO priority_queue:优先级高的元素先出
;*;*;*;*;*;*;*;*;*;□ STL迭代器
? 迭代器的作用是按照一定的顺序访问容器中的元素。
? 迭代器可以有规则的遍历容器中的元素,也可以访问容器中的部分元素。迭代器为任意类型的容器提供了一个很小的公共接口。
? 迭代器的作用可以看做指向容器中元素的指针。
;*;*;? STL迭代器
半开区间[
您可能关注的文档
最近下载
- 2025-2026新人教版小学3三年级数学上册全册教案【新教材】.doc
- 发展社会主义民主政治..pptx VIP
- 加油站试用合同.docx VIP
- 《发展社会主义民族政治》主题单元设计.doc VIP
- 学校财务管理培训课件《中小学食堂财务管理与会计核算》.pptx VIP
- 广东省深圳市罗湖区2023年中考英语二模试卷(附答案详解).docx VIP
- 高压变频器节能计算.docx VIP
- 水利水电工程单元工程施工质量验收评定表及填表说明.doc VIP
- 《中国特色社会主义》教案第二单元第5课第2框教案.docx VIP
- 苏少版(2024)小学美术一年级上册教学设计(附教材目录).docx VIP
文档评论(0)