C标准模板库.ppt

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
✓ vector(vector<T>& X)
C++标准模板库
(Standard Template Library, 简称STL)
17:37:52
1
标准模板库简介
❖ 库(library)是一系列程序组件的集合,它们可以在不同的 程序中重复使用。库函数设计的第一位的要求就是通用性
❖ 模板(template)为通用性带来了不可估量的前景。
❖ 标准模板库(Standard Template Library)简称STL,是 C++最有特色、最实用的部分之一。
❖ STL包含: 容器类(container)、 迭代器(iterator)、 算法 (algorithm)、函数对象(function object)
17:37:52
2
泛型程序设计 与标准模板库有关的概念和术语 容器类 迭代器 算法 函数对象
17:37:52
3
泛型程序设计
❖ 将程序写得尽可能通用 ❖ 将算法从特定的数据结构中抽象出来,成为通用的 ❖ C++的模板为泛型程序设计奠定了关键的基础 ❖ STL是泛型程序设计的一个范例
17:37:52
10
标准库容器共有的函数
说明
operator= swap() operator<
operator<=
operator>
operator>=
operator==
operator!=
将一个容器赋值复制给另一个同类容器 交换两个容器的元素 如果前面的容器小于后面的容器,则返回true,否 则返回false,不适用于priority_queue 如果前面的容器小于等于后面的容器,则返回true ,否则返回false,不适用于priority_queue 如果前面的容器大于后面的容器,则返回true,否 则返回false,不适用于priority_queue 如果前面的容器大于等于后面的容器,则返回true ,否则返回false,不适用于priority_queue 如果前面的容器等于后面的容器,则返回true,否 则返回false,不适用于priority_queue 如果前面的容器不等于后面的容器,则返回true, 否则返回false,不适用于priority_queue
从后面快速插入与删除,直接访问任何元素 从前面或后面快速插入与删除,直接访问任何元素 从任何地方快速插入与删除,双链表
关联容器
set(集合)
快速查找,不允许重复值
multiset(多重集合) 快速查找,允许重复值
map(映射)
Hale Waihona Puke 一对一映射,基于关键字快速查找,不允许重复值
multimap(多重映射) 一对多映射,基于关键字快速查找,允许重复值
指向的元素 ❖ 迭代器类型变量的定义 如: ❖ vector<int>::iterator it; //it为向量中的迭代器 ❖ for( it=a.begin(); it!=a.end(); ++it ) ❖ cout<<*it<<" ";
17:37:52
9
所有标准库容器共有的函数
标准库容器共有的函数
说明
默认构造函数
拷贝构造函数 析构函数 empty() max_size() size()
提供容器默认初始化的构造函数。通常每个容器 都有几个不同的构造函数,提供容器不同的初始 化方法 将容器初始化为现有同类容器副本的构造函数 撤消容器时,进行内存处理 判容器是否为空,空返回true,不空返回false 返回容器中最多允许的元素量 返回容器当前元素量
17:37:52
4
概念和术语
容器:常用模板化的数据类型,即可以容纳一组元素或元素集合。 (STL中有7种基本容器) ❖ vector(向量)从后面快速插入与删除,直接访问任何元素 ❖ deque(双端队列)从前面或后面快速插入与删除,直接访问任何 元素 ❖ list (链表)从任何地方快速插入与删除,顺序访问元素 ❖ set (集合)快速查找,不允许重复值 ❖ Multiset(多重集合)快速查找,允许重复值 ❖ map(一对一映射)基于关键字快速查找,不允许重复值 ❖ multimap一对多映射,基于关键字快速查找,允许重复值
器操作容器元素,算法本身与容器无关。算法通常返回 迭代器。
17:37:52
8
如: ❖ iterator erase(iterator it) //删除it指向的元素 ❖ iterator erase( iterator first, iterator last) //删除[first,last]范围
17:37:52
5
容器适配器
❖ 容器适配器是用来扩展7种基本容器的容器 ❖ 栈容器
使用适配器与一种基础容器相结合来实现的后进先 出(LIFO)数据结构。
❖ 队列容器
使用适配器与一种基础容器相结合来实现的先进先 出(FIFO)数据结构。
17:37:52
6
标准库容器类
说明
顺序容器 vector(向量) deque(双端队列) list(列表)
容器适配器 stack(栈) queue(队列)
后进先出(LIFO) 先进先出(FIFO)
17:37:52
7
迭代器(interator) 迭代器是指针概念的泛型化,它指向容器中的元素,它
能象指针一样增减,轮流指示容器中每个元素。所以说 迭代器是面向对象版本的指针。
迭代器可以包括指针,但迭代器又不仅仅是一个指针。 迭代器把算法与容器连接起来。算法只是间接通过迭代
17:37:52
11
向量容器 vector
❖ 使用向量容器
向量容器的构造 向向量容器放置元素
❖ push_back,insert,运算符“=”,下标[]运算符 删除向量容器中的元素
❖ pop_back,erase,clear 访问向量容器中的元素
❖ front,back,下标[]运算符 ❖ 使用迭代器
17:37:52
12
✓ vector(size_t n);
//构造一个有n个元素的向量,每个元素都是由默认的构造函数所 建立的
✓ vector(size_t n, T& V);
//T表示向量中元素类型,如int;为每个元素用同一个对象V来赋 初值
✓ vector(first,last);
//元素的初值由区间[first,last)指定的序列中的元素复制而来
相关文档
最新文档