欢迎来到天天文库
浏览记录
ID:51963594
大小:714.00 KB
页数:51页
时间:2020-03-26
《C++语言程序设计 清华大学郑莉 十.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章C++标准模板库清华大学郑莉C++语言程序设计2主要内容泛型程序设计迭代器顺序容器关联容器函数对象算法深度探索3泛型程序设计编写不依赖于具体数据类型的程序将算法从特定的数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础几个术语概念(concept):用来界定具备一定功能的数据类型,如“支持‘<’运算符”的数据类型构成Comparable这一概念;模型(model):符合一个概念的数据类型称为该概念的模型,如int型是Comparable概念的模型。泛型程序设计STL程序实例(例10-1)4//包含的头文件略去……usingnamespacestd;
2、intmain(){constintN=5;vectors(N);for(inti=0;i>s[i];transform(s.begin(),s.end(),ostream_iterator(cout,""),negate());cout<3、thm)容器(container)迭代器(iterator)函数对象(functionobject)迭代器(iterator)输入流迭代器和输出流迭代器输入流迭代器istream_iterator以输入流(如cin)为参数构造可用*(p++)获得下一个输入的元素输出流迭代器ostream_iterator构造时需要提供输出流(如cout)可用(*p++)=x将x输出到输出流二者都属于适配器适配器是用来为已有对象提供新的接口的对象输入流适配器和输出流适配器为流对象提供了迭代器的接口6迭代器例10-27//包含的头文件略去……usingnamespacestd;do4、ublesquare(doublex){returnx*x;}intmain(){transform(istream_iterator(cin),istream_iterator(),ostream_iterator(cout,"t"),square);cout<5、essIterator)迭代器9迭代器支持的操作迭代器是泛化的指针,提供了类似指针的操作(诸如++、*、->运算符)输入迭代器可以用来从序列中读取数据,如输入流迭代器输出迭代器允许向序列中写入数据,如输出流迭代器前向迭代器既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历双向迭代器与前向迭代器相似,但是在两个方向上都可以对数据遍历随机访问迭代器也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin()、end()函数得到的迭代器迭代器迭代器的区间两个迭代器表示一个区间:[p1,p2)STL算法常以迭代器的区间作为输入,传递输入数6、据合法的区间p1经过n次(n>0)自增(++)操作后满足p1==p2区间包含p1,但不包含p210迭代器迭代器的辅助函数advance(p,n)对p执行n次自增操作distance(first,last)计算两个迭代器first和last的距离,即对first执行多少次“++”操作后能够使得first==last11迭代器12容器容器类是容纳、包含一组元素或元素集合的对象。七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)容器容器的概念图13容器容器(Cont7、ainer)随机访问容器(RandomAccessContainer)可逆容器(ReversibleContainer)容器(Container)顺序容器(Sequence)关联容器(AssociativeContainer)vectordequelistmultisetmultimapsetmap14容器的通用功能容器的通用功能用默认构造函数构造空容器支持关系运算符:==、!=、<、<=、>、>=begin()、end():获得容器首、尾迭代器clear():将容器清空empty():判断容器是否为空
3、thm)容器(container)迭代器(iterator)函数对象(functionobject)迭代器(iterator)输入流迭代器和输出流迭代器输入流迭代器istream_iterator以输入流(如cin)为参数构造可用*(p++)获得下一个输入的元素输出流迭代器ostream_iterator构造时需要提供输出流(如cout)可用(*p++)=x将x输出到输出流二者都属于适配器适配器是用来为已有对象提供新的接口的对象输入流适配器和输出流适配器为流对象提供了迭代器的接口6迭代器例10-27//包含的头文件略去……usingnamespacestd;do
4、ublesquare(doublex){returnx*x;}intmain(){transform(istream_iterator(cin),istream_iterator(),ostream_iterator(cout,"t"),square);cout<5、essIterator)迭代器9迭代器支持的操作迭代器是泛化的指针,提供了类似指针的操作(诸如++、*、->运算符)输入迭代器可以用来从序列中读取数据,如输入流迭代器输出迭代器允许向序列中写入数据,如输出流迭代器前向迭代器既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历双向迭代器与前向迭代器相似,但是在两个方向上都可以对数据遍历随机访问迭代器也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin()、end()函数得到的迭代器迭代器迭代器的区间两个迭代器表示一个区间:[p1,p2)STL算法常以迭代器的区间作为输入,传递输入数6、据合法的区间p1经过n次(n>0)自增(++)操作后满足p1==p2区间包含p1,但不包含p210迭代器迭代器的辅助函数advance(p,n)对p执行n次自增操作distance(first,last)计算两个迭代器first和last的距离,即对first执行多少次“++”操作后能够使得first==last11迭代器12容器容器类是容纳、包含一组元素或元素集合的对象。七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)容器容器的概念图13容器容器(Cont7、ainer)随机访问容器(RandomAccessContainer)可逆容器(ReversibleContainer)容器(Container)顺序容器(Sequence)关联容器(AssociativeContainer)vectordequelistmultisetmultimapsetmap14容器的通用功能容器的通用功能用默认构造函数构造空容器支持关系运算符:==、!=、<、<=、>、>=begin()、end():获得容器首、尾迭代器clear():将容器清空empty():判断容器是否为空
5、essIterator)迭代器9迭代器支持的操作迭代器是泛化的指针,提供了类似指针的操作(诸如++、*、->运算符)输入迭代器可以用来从序列中读取数据,如输入流迭代器输出迭代器允许向序列中写入数据,如输出流迭代器前向迭代器既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历双向迭代器与前向迭代器相似,但是在两个方向上都可以对数据遍历随机访问迭代器也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin()、end()函数得到的迭代器迭代器迭代器的区间两个迭代器表示一个区间:[p1,p2)STL算法常以迭代器的区间作为输入,传递输入数
6、据合法的区间p1经过n次(n>0)自增(++)操作后满足p1==p2区间包含p1,但不包含p210迭代器迭代器的辅助函数advance(p,n)对p执行n次自增操作distance(first,last)计算两个迭代器first和last的距离,即对first执行多少次“++”操作后能够使得first==last11迭代器12容器容器类是容纳、包含一组元素或元素集合的对象。七种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)容器容器的概念图13容器容器(Cont
7、ainer)随机访问容器(RandomAccessContainer)可逆容器(ReversibleContainer)容器(Container)顺序容器(Sequence)关联容器(AssociativeContainer)vectordequelistmultisetmultimapsetmap14容器的通用功能容器的通用功能用默认构造函数构造空容器支持关系运算符:==、!=、<、<=、>、>=begin()、end():获得容器首、尾迭代器clear():将容器清空empty():判断容器是否为空
此文档下载收益归作者所有