华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十六讲 标准模板库(Standard Template Library,STL)

華束师免天學数学科学学院 School of Mathematical Sciences,East China Normal University 第十六讲 标准模板库 STL:Standard Template Library http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 第十六讲 标准模板库 STL:Standard Template Library

标准模板库STL C++STL是一套功能强大的C++模板库,提供了大量的通 用模板类和模板函数,这些模板类和模板函数可以实现多种 流行和常用的算法和数据结构,如向量、链表、队列、栈, 等等,大大提升软件开发的效率。 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 标准模板库 STL C++ STL 是一套功能强大的 C++ 模板库,提供了大量的通 用模板类和模板函数,这些模板类和模板函数可以实现多种 流行和常用的算法和数据结构,如向量、链表、队列、栈, 等等,大大提升软件开发的效率

STL三大核心组件 容器Containers 用来存储数据的一种数据结构(模板类),如向量,链表 ■算法Algorithms 对数据的各种操作(模板函数),如插入,排序,搜索等 ■迭代器iterators 访问容器中的数据的方法,作用类似于指针 http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 STL 三大核心组件 容器 Containers 用来存储数据的一种数据结构(模板类),如向量,链表 算法 Algorithms 对数据的各种操作(模板函数),如插入,排序,搜索等 迭代器 iterators 访问容器中的数据的方法,作用类似于指针

容器Containers 顺序容器/序列容器 关联容器 容器适配器 http://math.ecnu.edu.cn/~jypan 4
http://math.ecnu.edu.cn/~jypan 容器 Containers 顺序容器/序列容器 关联容器 容器适配器 1 4

容器:顺序容器 口顺序容器/序列容器(Sequential Containers) 按顺序(物理/逻辑)存储数据,如数组,链表等→数据结构 array 数组,长度不能改变 vector 只能在最后面插入或删除数据 deque 与vector类似,但允许在最前面插入或删除数据 list 双向链表,可在任意位置插入或删除数据 forward list 与1ist类似,但是单向的,只能沿一个方向访问 string 字符串,与vector类似,但存储的是字符 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 容器:顺序容器 顺序容器/序列容器(Sequential Containers) 按顺序(物理/逻辑)存储数据,如数组,链表等 数据结构 array 数组,长度不能改变 vector 只能在最后面插入或删除数据 deque 与 vector 类似,但允许在最前面插入或删除数据 list 双向链表,可在任意位置插入或删除数据 forward_list 与 list 类似,但是单向的,只能沿一个方向访问 string 字符串,与 vector 类似,但存储的是字符 5

array:长度固定,可随意访问其中的任何元素 obi obj obj obj obj obj vector:与数组类似,且长度可变,但只能在最后面添加或删除数据 ob时 obj obj obj obj new deque:与vector类似,但可在两头添加或删除数据 new obj obj obj new http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan obj obj obj obj obj obj array:长度固定,可随意访问其中的任何元素 vector:与数组类似,且长度可变,但只能在最后面添加或删除数据 deque:与 vector 类似,但可在两头添加或删除数据 obj obj obj obj obj obj new new obj obj obj obj obj obj new 6

1st:双向链表,可在任意位置添加或删除数据,但只能从第一个 元素或最后一个元素开始访问 new new 购☒k☒k forward1ist:单向链表,与list类似,但只能单向访问 new new ob ☒☒ b http://math.ecnu.edu.cn/~jypan 7
http://math.ecnu.edu.cn/~jypan forward_list:单向链表,与 list 类似,但只能单向访问 obj list:双向链表,可在任意位置添加或删除数据,但只能从第一个 元素或最后一个元素开始访问 obj obj obj obj obj new new obj obj obj obj obj obj new new 7

容器:关联容器 ▣关联容器(Associative Containers) 按排序方式存储数据,就像词典一样→方便搜索 set 存储互不相同的数据,插入数据时进行排列 unordered set 与set类似,但按Hash值排序 map 存储“键值”对,按唯一的键排序 unordered_map 与map类似,但按“键”的Hash值排序 multiset 与set类似,但允许有相同的数据 unordered multiset 与unordered_set类似,但允许有相同的数据 multimap 与map类似,但不要求“键”唯一 unordered_multimap 与unordered_map类似,但不要求“键”唯一 http://math.ecnu.edu.cn/~jypan 8
http://math.ecnu.edu.cn/~jypan 容器:关联容器 关联容器(Associative Containers) 按排序方式存储数据,就像词典一样 方便搜索 set 存储互不相同的数据,插入数据时进行排列 unordered_set 与 set 类似,但按 Hash 值排序 map 存储“键-值”对,按唯一的键排序 unordered_map 与 map 类似,但按“键”的 Hash 值排序 multiset 与 set 类似,但允许有相同的数据 unordered_multiset 与 unordered_set 类似,但允许有相同的数据 multimap 与 map 类似,但不要求“键”唯一 unordered_multimap 与 unordered_map 类似,但不要求“键”唯一 8

容器适配器 ▣ 容器适配器(Associative adapters) 顺序适配器和关联适配器的变种,增加一些特殊功能 stack 栈,按后进先出(LIFO)方式存储数据 queue 队列,按先进先出(FIF0)方式存储数据 priority_queue 队列,但能保证最大元素总在最前面 http://math.ecnu.edu.cn/~jypan 9
http://math.ecnu.edu.cn/~jypan 容器适配器 容器适配器(Associative adapters) 顺序适配器和关联适配器的变种,增加一些特殊功能 stack 栈,按后进先出(LIFO)方式存储数据 queue 队列,按先进先出(FIFO)方式存储数据 priority_queue 队列,但能保证最大元素总在最前面 9

2 算法Algorithms 对容器进行的各种操作,如排序,查找,反转等等,也可 以理解为容器所具有的功能(成员函数)。 #include find 查找指定的值 find if 根据条件查找 reverse 反转 remove if 根据条件删除相应的数据 transform 根据用户给定的方法对数据进行交换 http://math.ecnu.edu.cn/~jypan 10
http://math.ecnu.edu.cn/~jypan 算法 Algorithms 对容器进行的各种操作,如排序,查找,反转等等,也可 以理解为容器所具有的功能(成员函数)。 find 查找指定的值 find_if 根据条件查找 reverse 反转 remove_if 根据条件删除相应的数据 transform 根据用户给定的方法对数据进行交换 #include 2 10
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十五讲 文件流与输出输入重载.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十四讲 多态.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十三讲 继承与派生.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十二讲 运算符重载与自动类型转换.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ vector使用方法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十一讲 类与对象(III)面向对象提高.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十讲 类与对象(II)面向对象进阶.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第九讲 类与对象(I)面向对象基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第八讲 排序算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第七讲 输入输出与(C 语言)文件操作.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Pointers and Memory.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)内存分配——栈和堆.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Fast and stable matrix multiplication.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)Gauss消去法求解线性方程组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)矩阵乘积快速算法——Strassen 算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第六讲 指针.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(二)字符数组(字符串).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(一)数值数组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第四讲 函数.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分的近似计算(数值积分).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ Reference Card(C++ RC by Greg Book,2002).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ RC by Mississippi State U.(2009).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII码(256完整版)The ASCII Character Set.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII 码——常用ASCII码.pdf
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Introduction(主讲:苏锐丹).pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Operating-System Structure.pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Processes.pptx
- 《移动互联网技术》课程教学资源(培训教材)Cisco Press - Building the Mobile Internet(Mark Grayson, Kevin Shatzkamer, Klaas Wierenga).pdf
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)01 课程介绍(主讲:苏锐丹).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)02 移动互联网概述.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 移动互联网技术(Android安全).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 Android应用安全 Android application security.pptx
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 传输层移动性.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 应用层移动性.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 相关支撑技术.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)04 数据链路层移动性技术.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)05 网络层Mobility.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)06 移动互联网IPv6.ppt
- 兰州交通大学:《单片机原理与接口技术》课程教学资源(教案讲义,打印版)实验教学大纲.pdf
- 兰州交通大学:《单片机原理与接口技术》课程教学资源(教案讲义,打印版)理论教学大纲.pdf