C++语言程序设计 第十章C艹标准模板库 清华大学郑莉 大斗
第十章 C++标准模板库 清华大学 郑 莉 C++语言程序设计
C++语言程序设计 清华大学郏莉 主要内啥 泛型程序设计 ●与标准模板库有关的概念和术语 ●C++标准模板库中的容器 ●迭代器 标准C++库中的算法 函数对象
C++语言程序设计 清华大学 郑莉 2 主要内容 ⚫ 泛型程序设计 ⚫ 与标准模板库有关的概念和术语 ⚫ C++标准模板库中的容器 ⚫ 迭代器 ⚫ 标准C++库中的算法 ⚫ 函数对象
C++语言程序设计 清华大学郏莉 乏剋程序设计 将程序写得尽可能通用 将算法从特定的数据结构中抽象出来,成 为通用的 ●C++的模板为泛型程序设计奠定了关键的 基础 ●STL是泛型程序设计的一个范例 容器( container) 迭代器 iterator) 算法( algorithms) 函数对象( function object) 3
C++语言程序设计 清华大学 郑莉 3 泛型程序设计 ⚫ 将程序写得尽可能通用 ⚫ 将算法从特定的数据结构中抽象出来,成 为通用的 ⚫ C++的模板为泛型程序设计奠定了关键的 基础 ⚫ STL是泛型程序设计的一个范例 – 容器(container) – 迭代器(iterator) – 算法(algorithms) – 函数对象(function object)
C++语言程序设计 清华大学郑莉 命名空间( Namespace) 个命名空间将不同的标识符集合在一个 概命名作用域 ( named scope)内 为了解决命名冲突 念和术语 例如,声明一个命名空间NS: namespace Ns t class File void Fun o: 则引用标识符的方式如下, NS: File obj: NS∷FunO 没有声明命名空间的标识符都处于无名的 命名空间中
C++语言程序设计 清华大学 郑莉 4 命名空间(Namespace) ⚫ 一个命名空间将不同的标识符集合在一个 命名作用域(named scope)内 – 为了解决命名冲突 – 例如,声明一个命名空间NS: namspace NS { class File; void Fun (); } 则引用标识符的方式如下, NS:: File obj; NS:: Fun (); ⚫ 没有声明命名空间的标识符都处于无名的 命名空间中 概 念 和 术 语
C++语言程序设计 清华大学郑莉 命名空间( Namespace) ●可以用 using来指定命名空间 概念和术语 例如,经过以下声明: using NS: File: 在当前作用域中就可以直接引用Fie using namespace std 命名空间std中所有标识符都可直接引用 在新的C+标准程序库中,所有标识 符都声明在命名空间std中,头文件 都不使用扩展名
C++语言程序设计 清华大学 郑莉 5 命名空间(Namespace) ⚫ 可以用using来指定命名空间 – 例如,经过以下声明: using NS::File; 在当前作用域中就可以直接引用File – using namespace std; 命名空间std中所有标识符都可直接引用 ⚫ 在新的C++标准程序库中,所有标识 符都声明在命名空间std中,头文件 都不使用扩展名 概 念 和 术 语
C++语言程序设计 清华大学郏莉 概容器类是容纳、包含一组元素或元素 念。异类容器类与同类容器类 顺序容器与关联容器 语七种基本容器: 向量( vector)、双端队列( deque) 列表(list)、集合(set)、多重集合 ( multiset、映射(map)和多重映射 (multimap
C++语言程序设计 清华大学 郑莉 6 容器 ⚫ 容器类是容纳、包含一组元素或元素 集合的对象。 ⚫ 异类容器类与同类容器类 ⚫ 顺序容器与关联容器 ⚫ 七种基本容器: – 向量(vector)、双端队列(deque)、 列表(list)、集合(set)、多重集合 (multiset)、映射(map)和多重映射 (multimap) 概 念 和 术 语
C++语言程序设计 清华大学郏莉 容器的接口 通用容器运算符 方法(函数) 迭代方法 o begin(, endO, begin(, rendO 访问方法 e size(, max size, swap(, empty
C++语言程序设计 清华大学 郑莉 7 容器的接口 ⚫ 通用容器运算符 – ==,!=,>,>=,<,<=,= ⚫ 方法(函数) –迭代方法 ⚫ begin(),end(),rbegin(),rend() –访问方法 ⚫ size(),max_size(),swap(),empty()
C++语言程序设计 清华大学郏莉 活配器 概适配器是一种接口类 念 为已有的类提供新的接口。 目的是简化、约束、使之安全、隐藏或 者改变被修改类提供的服务集 术。三种类型的适配器: 语 容器适配器 用来扩展7种基本容器,它们和顺序容器相结 合构成栈、队列和优先队列容器 迭代器适配器 函数对象适配器
C++语言程序设计 清华大学 郑莉 8 适配器 ⚫ 适配器是一种接口类 – 为已有的类提供新的接口。 – 目的是简化、约束、使之安全、隐藏或 者改变被修改类提供的服务集合。 ⚫ 三种类型的适配器: – 容器适配器 ⚫ 用来扩展7种基本容器,它们和顺序容器相结 合构成栈、队列和优先队列容器 – 迭代器适配器 – 函数对象适配器。 概 念 和 术 语
C++语言程序设计 清华大学郏莉 迭代器 概 迭代器是面向对象版本的指针,它 念们提供了访问容器、序列中每个元素的 方法。 术语
C++语言程序设计 清华大学 郑莉 9 迭代器 迭代器是面向对象版本的指针,它 们提供了访问容器、序列中每个元素的 方法。 概 念 和 术 语
C++语言程序设计 清华大学郏莉 算法 概C++标准模板库中包括70多个算法 念 其中包括査找算法,排序算法,消除算 法,记数算法,比较算法,变换算法 置换算法和容器管理等等 ●这些算法的一个最重要的特性就是它 语们的统一性,并且可以广泛用于不同 的对象和内置的数据类型
C++语言程序设计 清华大学 郑莉 10 算法 ⚫ C++标准模板库中包括70多个算法 – 其中包括查找算法,排序算法,消除算 法,记数算法,比较算法,变换算法, 置换算法和容器管理等等。 ⚫ 这些算法的一个最重要的特性就是它 们的统一性,并且可以广泛用于不同 的对象和内置的数据类型。 概 念 和 术 语