编辑: ddzhikoi | 2019-12-02 |
第十章 C++标准模板库 C++语言程序设计 主要内容 泛型程序设计与标准模板库有关的概念和术语C++标准模板库中的容器迭代器标准C++库中的算法函数对象 泛型程序设计 将程序写得尽可能通用 将算法从特定的数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础 STL是泛型程序设计的一个范例 容器(container)迭代器(iterator)算法(algorithms)函数对象(function object) 命名空间(Namespace) 一个命名空间将不同的标识符集合在一个命名作用域(named scope)内为了解决命名冲突例如,声明一个命名空间NS:namspace NS {class File;
void Fun ();
} 则引用标识符的方式如下,NS:: File obj;
NS:: Fun ();
没有声明命名空间的标识符都处于无名的命名空间中 概念和术语 命名空间(Namespace) 可以用using来指定命名空间例如,经过以下声明:using NS::File;
在当前作用域中就可以直接引用Fileusing namespace std;
命名空间std中所有标识符都可直接引用在新的C++标准程序库中,所有标识符都声明在命名空间std中,头文件都不使用扩展名 概念和术语 容器 容器类是容纳、包含一组元素或元素集合的对象.
异类容器类与同类容器类当容器类包含不同类型的元素时,称为异类容器类.当容器类包含相同类型的元素时,称为同类容器类顺序容器顺序容器将一组具有相同类型的元素以严格的线性形式组织起来,如:向量、双端队列和列表关联容器具有根据一组索引来快速提取元素的能力,如:集合和映射七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap) 概念和术语 容器的接口 通用容器运算符=方法(函数)迭代方法begin(),end(),rbegin(),rend()访问方法size(),max_size(),swap(),empty() 适配器 适配器是一种接口类为已有的类提供新的接口.目的是简化、约束、使之安全、隐藏或者改变被修改类提供的服务集合.三种类型的适配器:容器适配器用来扩展7种基本容器,它们和顺序容器相结合构成栈、队列和优先队列容器迭代器适配器函数对象适配器. 概念和术语 迭代器 迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的方法. 概念和术语 算法 C++标准模板库中包括70多个算法其中包括查找算法,排序算法,消除算法,记数算法,比较算法,变换算法,置换算法和容器管理等等.这些算法的一个最重要的特性就是它们的统一性,并且可以广泛用于不同的对象和内置的数据类型. 概念和术语 顺序容器 顺序容器的接口插入方法push_front(),push_back(),insert(),运算符"="删除方法pop() ,erase(),clear()迭代访问方法使用迭代器其它顺序容器访问方法(不修改访问方法)front(),back(),下标[]运算符 容器顺序容器――向量 向量属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问)向量是动态结构,它的大小不固定,可以在程序运行时增加或减少.例10-1求范围2~N中的质数,N在程序运行时由键盘输入. 容器//10_1.cpp#include #include #include //包含向量容器头文件using namespace std ;
int main(vector A(10);
int n;
int primecount = 0, i, j;
cout> n;
A[primecount++] = 2;
* for(i = 3;
i < n;
i++) { if (primecount == A.size()) A.resize(primecount + 10);
if (i %
2 == 0) continue;
j = 3;
while (j i/2) A[primecount++] = i;
} for (i = 0;
i