module库算法与函数对象介绍_第1页
module库算法与函数对象介绍_第2页
module库算法与函数对象介绍_第3页
module库算法与函数对象介绍_第4页
module库算法与函数对象介绍_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

标标准库-算法与函数对算法与函数对象-标准算法算法与函数对象-标准算法一 算法与函数对象-标准算法一算法与函数对象-标准算法一 replace_copy_if() 算法与函数对象-标准算法算法与函数对象-标准算法一 n 算法与函数对象-标准算法一算法与函数对象-标准算法一 partial_sort_copy() 算法与函数对象-标准算法与函数对象-标准算法一 算法与函数对象-算法与函数对象-标准算法一 lexicographic_compare()●●template<typenameArg,typenamestruct{typedefArgargument_type;typedefResultresult_type;template<typenameArg1,typenameArg2,typenamestructbinary_functiontypedefArg1first_argument_type;typedefArg2second_argument_type;typedefResultresult_type;template<typenamestructlogical_not:publicunary_function<T,bool>booloperator()(constT&x)constreturn}template<typenamestructless:publicbinary_function<T,T,bool>booloperator()(constT&x,constT&y)constreturnx<} 二 arg1== 二 arg1!= 二 arg1> 二 arg1< 二 arg1>= 二 arg1<= 二 arg1&& 二 arg1|| 一 二 arg1+ 二 arg1- 二 arg1* 二 arg1/ 二 arg1% 一 函 函数对 说函 函数对 说 以y2 以x2 0const 1cosnt 0const 1cosnt pointer_to_binary_function2 classShapevirtualvoidvirtualvoidrotate(doublevoidf(vector<Shape*>&s,doubleang)//mem_funfor_each(s.begin(),s.end(),constintSIZE=inta[SIZE]={12,45,23,2,89,7,6,66,5//int*p=find_if(a,a+SIZE,bind2nd(less<int>(),}算法与算法与函数对象-非修改性算template<typenameInputIterator,typenameFunction>Functionfor_each(InputIteratorfirst,InputIteratorlast,Functionf){for(;first!=last;++first)return}算法与算法与函数对象-非修改性算template<typenameInputIterator,typenameT>inlineInputIteratorfind(InputIteratorfirst,InputIteratorlast,constT&template<typenameInputIterator,typenamePredicate>inlineInputIteratorfind_if(InputIteratorfirst,InputIteratorlast,Predicatetemplate<typenameInputIterator,typenameForwardIterator>InputIteratorfind_first_of(InputIteratorfirst1,InputIteratorlast1,ForwardIteratorForwardIteratortemplate<typenameInputIterator,typenameForwardIterator,typenameBinaryPredicate>InputIteratorfind_first_of(InputIteratorfirst1,InputIteratorlast1,ForwardIteratorfirst2,ForwardIteratorlast2,BinaryPredicatecomp);算法与函数算法与函数对象-非修改性算inta[]={12,23,2,2,89,7,6intb[]={56,7,23int*p0=find_if(a,a+7,bind1st(less<int>(),56));assert(p0==a+4);int*p1=find_first_of(a,a+7,b,b+3);//&a[1]assert(p1==a+1);int*p2=adjacent_find(a,a+7);//&a[2]assert(p2==a+2);template<typenameForwardIteratoradjacent_find(ForwardIteratorForwardIteratortemplate<typenameForwardIterator,typenameBinaryPredicate>ForwardIteratoradjacent_find(ForwardIteratorfirst,ForwardIteratorlast,BinaryPredicate算法与算法与函数对象-非修改性算template<typenameInputIterator,typenametypenameiterator_traits<InputIterator>::difference_typecount(InputIteratorfirst,InputIteratorlast,const_Tp&template<typenameInputIterator,typenamePredicate>typenameiterator_traits<InputIterator>::difference_typecount_if(InputIteratorfirst,InputIteratorlast,Predicate算法与算法与函数对象-非修改性算template<typenameIIter1,typenameboolequal(IIter1first,IIter1last,IIter2template<typenameIIter1,typenameIIter2,typenameboolequal(IIter1first,IIter1last,IIter2BinaryPredicatetemplate<typenameIIter1,typenamepair<IIter1,IIter2>mismatch(IIter1first,IIter1last,IIter2first2);template<typenameIIter1,typenameIIter2,typenamepair<IIter1,IIter2>mismatch(IIter1first,IIter1last,IIter2first2,BinaryPredicatepred);算法与函数对算法与函数对象-非修改性算template<typenameForwardIterator1,typenamesearch(ForwardIterator1first1,ForwardIterator1ForwardIterator2first2,ForwardIterator2template<typenameForwardIterator1,typenameForwardIterator2,typenameBinaryPredicate>search(ForwardIterator1first1,ForwardIterator1last1,ForwardIterator2first2,ForwardIterator2last2,BinaryPredicatepredicate);//template<typenameForwardIterator,typenametypenamesearch_n(ForwardIteratorfirst,ForwardIteratorlast,count,constT&算法与函数对算法与函数对象-非修改性算template<typenameForwardIterator,typenameInteger,typenameT,typenameBinaryPredicate>search_n(ForwardIteratorfirst,ForwardIteratorlast,count,constT&val,BinaryPredicatetemplate<typenameForwardIterator1,typenameForwardIterator2>inlineForwardIterator1find_end(ForwardIterator1first1,ForwardIterator1ForwardIterator2first2,ForwardIterator2template<typenameForwardIterator1,typenameForwardIterator2,typenameBinaryPredicate>inlinefind_end(ForwardIterator1first1,ForwardIterator1last1,ForwardIterator2first2,ForwardIterator2last2,BinaryPredicatecomp);template<typenameIItertemplate<typenameIIter,typenameOItercopy(IIterfirst,IIterlast,OItertemplate<typenameBIter1,typenameBIter2copy_backward(BIter1first,BIter1last,template<typenameIIter,typenameOIter,typenameOItercopy_if(IIterfirst,IIterlast,OIterres,inta[]={inta[]={12,23,2,2,89,7,6list<int>ls(a,a+7);//size==7vector<int>v(7);//size==7copy(ls.begin(),ls.end(),v.begin());vector<int>v1;//size==0copy(ls.begin(),ls.end(),v1.begin());危险!runtimecopy(ls.begin(),ls.end(),back_inserter(v1));//copycopy(v.begin(),v.end(),ostream_iterator<int>(cout,"template<typenameInputIterator,template<typenameInputIterator,typenametypename_UnaryOperation>transform(InputIteratorfirst,InputIteratorOutputIteratorresult,_UnaryOperationtemplate<typenameInputIterator1,typenameInputIterator2,typenameOutputIterator,typenametransform(InputIterator1first1,InputIterator1last1,InputIterator2first2,OutputIteratorresult,BinaryOperationbinary_op){while(first1!=*result++=binary_op(*first1++,*first2++);returnresult;}template<typenametemplate<typenameunique(ForwardIteratorfirst,template<typenameForwardIterator,typenameunique(ForwardIteratorfirst,ForwardIteratorBinaryPredicatetemplate<typenameInputIterator,typenameOutputIterator,typenameBinaryPredicate>unique_copy(InputIteratorfirst,InputIteratorOutputIteratorresult,BinaryPredicateinta[]={inta[]={23,2,2,89,7,2,6vector<int>v(a,a+//step1:sortsort(v.begin(),v.end());//step2:vector<int>::iteratorlast=//step3:v.erase(last,v.end//output:26723copy(v.begin(),v.end(),(cout,"template<typenameFIter,template<typenameFIter,typenamevoidreplace(FIter,FIter,constT&,consttemplate<typenameFIter,typenamePredicate,typenameT>voidreplace_if(FIter,FIter,Predicate,constT&);template<typenameIIter,typenameOIter,typenameOIterreplace_copy(IIter,IIter,OIter,constT&,consttemplate<typenameIter,typenameOIter,typenamePredicate,typenameT>OIterreplace_copy_if(Iter,Iter,OIter,Predicate,constinta[]={inta[]={23,2,2,89,7,2,7,6vector<int>v(a,a+replace_if(v.begin(),v.end(),bind2nd(less<int>(),8),//output:23161689161616copy(v.begin(),v.end(),ostream_iterator<int>(cout,"stringdir("c:\\a\\b\\c\\d");replace(dir.begin(),dir.end(),'\\','/');cout<<dir<<//template<typenameFIter,typename_Tp>FItertemplate<typenameFIter,typename_Tp>FIterremove(FIter,FIter,const_Tp&);template<typenameFIter,typenamePredicate>FIterremove_if(FIter,FIter,Predicate);template<typenameIIter,OItertypenameOIter,typename_Tp>IIter,OIter,const_Tp&);template<typenametypenameOIter,typenameOIterremove_copy_if(IIter,IIter,OIter,inta[]={23,2,89,7,2,inta[]={23,2,89,7,2,7,6last=a+//output:23897762copy(v.begin(),v.end(),cout<<endl;7(cout,v.erase(last,//output:2389776copy(v.begin(),v.end(),cout<<endl;(cout,template<typenameFIter,typenameTtemplate<typenameFIter,typenameT>voidfill(FIter,FIter,constT&);template<typenameOIter,voidfill_n(OIter,typenameSize,constT&);typenametemplate<typenametypenamevoidgenerate(FIter,FIter,template<typenameOIter,typenameSize,typenameT,typenameGenerator>voidgenerate_n(OIter,Size,structGeneratorGenerator(inti):n(i)structGeneratorGenerator(inti):n(i)}intoperator()()/*}intinta1[16];inta2[16];vector<int>v;fill(a1,a1+16,generate(a2,a2+16,fill_n(back_inserter(v),20,template<typenameBIter>voidreverse(BIter,template<typenameBIter>voidreverse(BIter,BIter);template<typenameBIter,typenameOIter>OIterreverse_copy(BIter,BIter,template<typenamevoidrotate(FIter,FIter,FIter,OIterrotate_copy(FIter,FIter,FIter,template<typenamevoidrandom_shuffle(RAIter,template<typenameRAIter,typenameGenerator>voidrandom_shuffle(RAIter,RAIter,Generator&);inta1[]={66,88,99,12,28,inta1[]={66,88,99,12,28,//1128copy(a1,a1+9988+6,"rotate(a1,a1+2,a1+//1299112888copy(a1,a1+6,"random_shuffle(a1,a1+882899111266也有可能是其它的次序)copy(a1,a16"template<typenameT>voidswaptemplate<typenameT>voidswap(T&,T&);template<typenameT,size_tN>voidswap(T(&)[N],T(&)[N]);template<typenameFIter1,typenamevoiditer_swap(FIter1,FIter2);template<typenameFIter1,typenameFIter2swap_ranges(FIter1,template<typenameRAIter>voidsort(RAIter,RAIter);template<typenameRAIter,typenameCompare>voidsort(RAIter,RAIter,Compare);template<typenamevoidstable_sort(RAIter,template<typenameRAIter,typenameCompare>voidstable_sort(RAIter,RAIter,Compare);template<typenamevoidpartial_sort(RAIter,RAIter,template<typenameRAIter,typenamevoidpartial_sort(RAIter,RAIter,RAIter,template<typenameIIter,typenameRAIterpartial_sort_copy(IIter,IIter,RAIter,template<typenameIIter,typenameRAIter,typenameCompare>RAIterpartial_sort_copy(IIter,IIter,RAIter,RAIter,inta1[]={66,88,99,12,28,11,2,9取序列中3nth_element(a1+0,a1+3,a1+//output:921112289988copy(a1,a1+8,ostream_iterator<int>(cout,"template<typenamevoidnth_element(RAIterfirst,RAIternth,RAItertemplate<typenameRAIter,typenamevoidnth_element(RAIterfirst,RAIternth,RAIterComparetemplate<typenameFIter,typenameboolbinary_search(FIter,FIter,consttemplate<typenameFIter,typenameT,typenameCompare>boolbinary_search(FIter,FIter,constT&,Compare);template<typenameFIter,typenameT>pair<FIter,FIter>equal_range(FIter,FIter,constT&);template<typenameFIter,typenameT,typenameCompare>pair<FIter,FIter>equal_range(FIter,FIter,constT&,template<typenameFIter,typenameT>FIterlower_bound(FIter,FIter,constT&);template<typenameFIter,typenameT,typenameCompare>FIterlower_bound(FIter,FIter,constT&,Compare);template<typenameFIter,typenameT>FIterupper_bound(FIter,FIter,constT&);template<typenameFIter,typenameT,typenameCompare>FIterupper_bound(FIter,FIter,constT&,Compare);template<typenameIIter1,typenameIIter2,typenameOIter>OItermerge(IIter1,IIter1,IIter2,IIter2,OIter);template<typenameIIter1,typenameIIter2,typenameOIter,typenameCompare>OItermerge(IIter1,IIter1,IIter2,IIter2,OIter,template<typenamevoidinplace_merge(BIter,BIter,template<typenameBIter,typenamevoidinplace_merge(BIter,BIter,BIter,inta1[]={1,3,5,7inta2[]={2,4,6,8intmerge(a1,a1+4,a2,a2+4,//output:1234567copy(a3,a3+8,ostream_iterator<int>(cout,"inta4[]={1,3,5,7,2,4,6,8inplace_merge(a4,a4+4,a4+//output:1234567copy(a4,a4+8,ostream_iterator<int>(cout,"inta1[]={21,13,65,37,56,23partition(a1,a1+6,bind2nd(less<int>(),output211323375665(不保证元素的相对次序)copy(a1a16,ostream_iterator<int(cout));inta2[]={21,13,65,37,56,23stable_partition(a2,a2+6,bind2nd(less<int>(),//output:211323375665(保证元素的相对次序)copy(a2,a26ostream_iterator<intcout,));template<typenameBIter,typenamePredicate>BIterpartition(BIter,BIter,Predicate);template<typenameBIter,typenamePredicate>BIterstable_partition(BIter,BIter,Predicate);template<typenameIIter1,typenameIIter2>boolincludes(IIter1,IIter1,IIter2,IIter2);template<typenameIIter1,typenameIIter2,typenameCompare>boolincludes(IIter1,IIter1,IIter2,IIter2,template<typenameIIter1,typenameIIter2,typenameOIter>OIterset_difference(IIter1,IIter1,IIter2,IIter2,template<typenameIIter1,typenameIIter2,typenameOIter,typenameCompare>OIterset_difference(IIter1,IIter1,IIter2,OIter,template<typenameIIter1,typenameIIter2,typenameOIter>OIterset_intersection(IIter1,IIter1,IIter2,IIter2,template<typenameIIter1,typenameIIter2,typenameOIter,typenameCompare>OIterset_intersection(IIter1,IIter1,IIter2,IIter2,OIter,Compare);template<typenameIIter1,typenameIIter2,typenameOIter>OIterset_symmetric_difference(IIter1,IIter1,IIter2,IIter2,template<typenameIIter1,typenameIIter2,typenameOIter,typenameCompare>OIterset_symmetric_difference(IIter1,IIter1,IIter2,IIter2,OIter,Compare);template<typenameIIter1,typenameIIter2,typenameOIter>OIterset_union(IIter1,IIter1,IIter2,IIter2,OIter);template<typenameIIter1,typenameIIter2,typenameOIter,typenameCompare>OIterset_union(IIter1,IIter1,IIter2,IIter2,OIter,template<typenamevoidpush_heap(RAIter,template<typenameRAIter,typenameCompare>voidpush_heap(RAIter,RAIter,Compare);template<typenameRAIter>voidpop_heap(RAIter,RAIter);template<typenameRAIter,typename

温馨提示

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

评论

0/150

提交评论