20_标准模板库(三).ppt_第1页
20_标准模板库(三).ppt_第2页
20_标准模板库(三).ppt_第3页
20_标准模板库(三).ppt_第4页
20_标准模板库(三).ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,6.2settemplate,classA=allocatorclassset插入set中已有的元素时,插入不成功。,程序设计实习,第二十讲标准模板库(三),pair模板:templatestructpairtypedefTfirst_type;typedefUsecond_type;Tfirst;Usecond;pair();pair(constTpair模板可以用于生成key-value对,#include#includeusingnamespacestd;main()typedefsetdouble_set;constintSIZE=5;doubleaSIZE=2.1,4.2,9.5,2.1,3.7;double_setdoubleSet(a,a+SIZE);ostream_iteratoroutput(cout,);cout1);copy(doubleSet.begin(),doubleSet.end(),output);coutendl;,输出:1)2.13.74.29.52)9.5notinserted,pairp;p=doubleSet.insert(9.5);if(p.second)cout2)*(p.first)insertedendl;elsecout2)*(p.first)notinsertedmmid;mmidpairs;cout1)pairs.count(15)endl;pairs.insert(mmid:value_type(15,2.7);pairs.insert(mmid:value_type(15,99.3);cout“2)”pairs.count(15)endl;/求某关键值的个数pairs.insert(mmid:value_type(30,111.11);pairs.insert(mmid:value_type(10,22.22);,输出:1)02)2(10,22.22),(15,2.7),(15,99.3),(20,9.3),(25,33.333),(30,111.11),pairs.insert(mmid:value_type(25,33.333);pairs.insert(mmid:value_type(20,9.3);for(mmid:const_iteratori=pairs.begin();i!=pairs.end();i+)coutfirstsecond)mmid;mmidpairs;cout1)pairs.count(15)endl;pairs.insert(mmid:value_type(15,2.7);pairs.insert(make_pair(15,99.3);/make_pair生成一个pair对象cout2)pairs.count(15)endl;pairs.insert(mmid:value_type(20,9.3);mmid:iteratori;cout3);for(i=pairs.begin();i!=pairs.end();i+)cout*i,;,输出:1)02)13)(15,2.7),(20,9.3),4)(15,2.7),(20,9.3),(40,0),5)(15,6.28),(20,9.3),(40,0),coutendl;cout4);intn=pairs40;/如果没有关键字为40的元素,则插入一个for(i=pairs.begin();i!=pairs.end();i+)cout*i,;coutendl;cout5);pairs15=6.28;/把关键字为15的元素值改成6.28for(i=pairs.begin();i!=pairs.end();i+)cout*iclassqueue;同样也有push,pop,top函数但是push发生在队尾,pop,top发生在队头,先进先出,7.3priority_queue和queue类似,可以用vector和deque实现,缺省情况下用vector实现。priority_queue通常用堆排序技术实现,保证最大的元素总是在最前面。即执行pop操作时,删除的是最大的元素,执行top操作时,返回的是最大元素的引用。默认的元素比较器是less,#include#includeusingnamespacestd;main()priority_queuepriorities;priorities.push(3.2);priorities.push(9.8);priorities.push(5.4);while(!priorities.empty()coutpriorities.top();priorities.pop();/输出结果:9.85.43.2,8算法1)random_shuffle:templatevoidrandom_shuffle(RanItfirst,RanItlast);随机打乱first,last)中的元素,适用于能随机访问的容器,2)count:templatesize_tcount(InItfirst,InItlast,constT计算first,last)中符合pr(e)=true的元素e的个数,3)min_element:templateFwdItmin_element(FwdItfirst,FwdItlast);返回first,last)中最小元素的迭代器,以“”作比较器,4)max_element:templateFwdItmax_element(FwdItfirst,FwdItlast);返回first,last)中最大(不小)元素的迭代器,以“”作比较器,5)accumulatetemplateTaccumulate(InItfirst,InItlast,Tval);对first,last)区间中的每个迭代器I,执行val=val+*I;返回valtemplateTaccumulate(InItfirst,InItlast,Tval,Predpr);对first,last)区间中的每个迭代器I,执行val=pr(val,*I),返回val,6)for_eachtemplateFunfor_each(InItfirst,InItlast,Funf);对first,last)中的每个元素e,执行f(e),要求f(e)不能改变e,7)transformtemplateOutIttransform(InItfirst,InItlast,OutItx,Unopuop);对first,last)中的每个迭代器I,执行uop(*I);并将结果依次放入从x开始的地方。要求uop(*I)不得改变*I的值本模板返回值是个迭代器,即x+(last-first)x可以和first相等,#include#include#include#include#includeusingnamespacestd;classCLessThen9public:booloperator()(intn)returnn9;voidoutputSquare(intvalue)coutvalue*value;intcalculateCube(intvalue)returnvalue*value*value;,main()constintSIZE=10;inta1=1,2,3,4,5,6,7,8,9,10;inta2=100,2,8,1,50,3,8,9,10,2;vectorv(a1,a1+SIZE);ostream_iteratoroutput(cout,);random_shuffle(v.begin(),v.end();coutendl1);copy(v.begin(),v.end(),output);copy(a2,a2+SIZE,v.begin();coutendl2);coutcount(v.begin(),v.end(),8);coutendl3);coutcount_if(v.begin(),v.end(),CLessThen9();,输出:1)541378910622)23)6,coutcubes(SIZE);transform(a1,a1+SIZE,cubes.begin(),calculateCube);coutendl10;,main()constintSIZE=10;inta1=2,8,1,50,3,100,8,9,10,2;vectorv(a1,a1+SIZE);ostream_iteratoroutput(cout,);vector:iteratorlocation;location=find(v.begin(),v.end(),10);if(location!=v.end()coutendl1)location-v.begin();location=find_if(v.begin(),v.end(),Greater10);if(location!=v.end(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论