欢迎来到天天文库
浏览记录
ID:39302645
大小:1.71 MB
页数:97页
时间:2019-06-30
《泛型程序设计与C标准模板库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章泛型程序设计与C++标准模板库清华大学郑莉目录10.1泛型程序设计及STL的结构10.2迭代器10.3容器的基本功能与分类10.4顺序容器10.5关联容器10.6函数对象10.7算法10.8综合实例——对个人银行账户管理程序的改进10.9深度探索10.10小结210.1.1泛型程序设计的基本概念编写不依赖于具体数据类型的程序将算法从特定的数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础几个术语概念(concept):用来界定具备一定功能的数据类型,如“支持‘<’运算符”的数据类型构成Comparab
2、le这一概念;模型(model):符合一个概念的数据类型称为该概念的模型,如int型是Comparable概念的模型。310.1泛型程序设计及STL的结构10.1.2STL简介标准模板库(StandardTemplateLibrary,简称STL)提供了一些非常常用的数据结构和算法STL程序实例(例10-1):410.1泛型程序设计及STL的结构//包含的头文件略去……usingnamespacestd;intmain(){constintN=5;vectors(N);for(inti=0;i>s
3、[i];transform(s.begin(),s.end(),ostream_iterator(cout,""),negate());cout<4、迭代器(iterator)10.1泛型程序设计及STL的结构——10.1.2STL简介10.2.1输入流迭代器和输出流迭代器输入流迭代器istream_iterator以输入流(如cin)为参数构造可用*(p++)获得下一个输入的元素输出流迭代器ostream_iterator构造时需要提供输出流(如cout)可用(*p++)=x将x输出到输出流二者都属于适配器适配器是用来为已有对象提供新的接口的对象输入流适配器和输出流适配器为流对象提供了迭代器的接口610.2迭代器例10-2从标准输入读入几个实数,分别将它们的平方5、输出//10_2.cpp#include#include#includeusingnamespacestd;//求平方的函数doublesquare(doublex){returnx*x;}intmain(){//从标准输入读入若干个实数,分别将它们的平方输出transform(istream_iterator(cin),istream_iterator(),ostream_iterator(cout,"t"),squ6、are);cout<运算符)输入迭代器可以用来从序列中读取数据,如输入流迭代器输出迭代器允7、许向序列中写入数据,如输出流迭代器前向迭代器既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历双向迭代器与前向迭代器相似,但是在两个方向上都可以对数据遍历随机访问迭代器也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin()、end()函数得到的迭代器910.2迭代器——10.2.2迭代器的分类10.2.3迭代器的区间两个迭代器表示一个区间:[p1,p2)STL算法常以迭代器的区间作为输入,传递输入数据合法的区间p1经过n次(n>0)自增(++)操作后满足p1==p2区间包含p18、,但不包含p21010.2迭代器例10-3综合运用几种迭代器的示例//10_3.cpp#include#include#include#includeusingnamespacestd
4、迭代器(iterator)10.1泛型程序设计及STL的结构——10.1.2STL简介10.2.1输入流迭代器和输出流迭代器输入流迭代器istream_iterator以输入流(如cin)为参数构造可用*(p++)获得下一个输入的元素输出流迭代器ostream_iterator构造时需要提供输出流(如cout)可用(*p++)=x将x输出到输出流二者都属于适配器适配器是用来为已有对象提供新的接口的对象输入流适配器和输出流适配器为流对象提供了迭代器的接口610.2迭代器例10-2从标准输入读入几个实数,分别将它们的平方
5、输出//10_2.cpp#include#include#includeusingnamespacestd;//求平方的函数doublesquare(doublex){returnx*x;}intmain(){//从标准输入读入若干个实数,分别将它们的平方输出transform(istream_iterator(cin),istream_iterator(),ostream_iterator(cout,"t"),squ
6、are);cout<运算符)输入迭代器可以用来从序列中读取数据,如输入流迭代器输出迭代器允
7、许向序列中写入数据,如输出流迭代器前向迭代器既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历双向迭代器与前向迭代器相似,但是在两个方向上都可以对数据遍历随机访问迭代器也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin()、end()函数得到的迭代器910.2迭代器——10.2.2迭代器的分类10.2.3迭代器的区间两个迭代器表示一个区间:[p1,p2)STL算法常以迭代器的区间作为输入,传递输入数据合法的区间p1经过n次(n>0)自增(++)操作后满足p1==p2区间包含p1
8、,但不包含p21010.2迭代器例10-3综合运用几种迭代器的示例//10_3.cpp#include#include#include#includeusingnamespacestd
此文档下载收益归作者所有