STL常用算法.docx

上传人:lao****ou 文档编号:59736 上传时间:2022-12-27 格式:DOCX 页数:9 大小:17.55KB
下载 相关 举报
STL常用算法.docx_第1页
第1页 / 共9页
STL常用算法.docx_第2页
第2页 / 共9页
STL常用算法.docx_第3页
第3页 / 共9页
STL常用算法.docx_第4页
第4页 / 共9页
STL常用算法.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STL常用算法.docx》由会员分享,可在线阅读,更多相关《STL常用算法.docx(9页珍藏版)》请在第一文库网上搜索。

1、#include 算法常用版本描述返回Typestd:find()find(_lnlt _Fisrt,_lnlt _Last,_Ty& _Val);从两个迭代器指定的范围中查找指定值引用被查找的值的iterator或 end()std: :find_if()find_if(_lnlt _Fisrt_Lastz _CallBack);从两个迭代器指定的范围中查找与回调谓词匹配的实例与谓词匹配的实例的iterator 或 end()std:find_if_not()find if not( Inlt Fisrtr Inlt Last, Func_CallBack);从迭代器范围中返回第一个不符合谓

2、词的元素第一个不符合谓词的元素的iterator 或 end ()std:count()count( Inlt First, Inlt Last,_Ty& _Val);求得一个元素序列中与第三个参数相符的元素的个数与第三个参数匹配的元素的int个数std:count_if()count_if(_lnlt _First_Last, _CallBack);求得一个序列中与谓词匹配的元素的个数符合条件元素的int个数std:generate()generate(_FwdIt _First,_Fwd工t _Last, _CallBack);通过特定值填充一个迭代器范围voidstd: :max ()m

3、ax(_Left,_Right /*,Predicate*/);通过operator或用户提供的二元谓词比较任意类型的两个元素返回较大的一个元素的const引用std: :min ()min(_Left,_Right /*,Predicate*/);通过operator或用户提供的二元谓词比较任意类型的两个元素较小的一个元素的const引用std: :max_element ()max_element(_FwdIt _First,_FwdIt _Last/*,_Pred*/);从一组任意类型的元素元素序列中查找“最大”的一个引用”最大的元素的iteratorstd: :min_element

4、()min_element(_FwdIt _First,_FwdIt _Last/*,_Pred*/);从一组任意类型的元素元素序列中查找“最小”的一个引用“最小”的元素的iteratoradjacent_find ()adjacent_find(_FwdIt _Firstz _FwdIt_Last/*z_Pred*/);从一组任意类型的元素序列中查找有重复的元素引用重复的第一个元素的iterator 或者 end()std:all_of()all_of(_lnlt _Firstz_lnlt _Last,Pr _Pred);当一组元素序列全部与谓词匹配时返回true否则返回falsebools

5、td:any_of()any_of(_lnlt First,_lnlt _Last,_Pr _Pred);当一组元素序列中任意一个元素与谓词匹配时返回true否贝IJ返回falseboolstd:none_of()none_of(_lnlt _First_Last,_Pr _Pred);当一组兀素序列全部都不与谓词匹配时返回true否贝lj返回falseboolstd:for_each()for_each(_lnlt _First,_lnlt _Lastr_CallBack);对指定范围内的所有元素执行一次_CallBack_CallBackl 类型std:transform()transfo

6、rm(_InIt_SrcFirst,_lnlt_SrcLast,_OutIt_DestBegin,_CallBack);对指定范围的兀素执行回调后生成新的兀素,然后将这些新元素保存在第三个参数指定的目标范围中引用Dest范围的past-the-end 的_OutputIteratortransform(_lnlt _Firstl,_lnlt _Last,_lnlt_First2f_OutIt _DestBegin,_CallBack);对两个指定序列的元素调用二元谓词,并将结果存入到第四个参数指定的容器中引用Dest范围的past-the-end 的_OutputIteratorstd:equ

7、al()equal(_lnlt _First1,_lnlt _Lastlf_lnlt _First2/*,_Pred*/);对两个不同类型的容器比较对应位置的值,当全部相等或者全部符合谓词时返回true否则返回falseboolstd:copy()copy(_lnlt _SrcBegin,_lnlt _SrcEndz _OutIt_DestBegin);将一个序列的元素复制到另一个序列中,Src范围与Dest范围不能相同,但可以重叠,std: : copy不会向目标序列中插入元素,而会直接修改元素,使用前必须配合_Des七序列的resize ()函数给Dest序列重分配足够的空间引用Dest范

8、围past_the_end 的_OutputIteratorstd:copybackward()copy.backward(_lnlt _SrcBegin,_lnlt _SrcEnd,_OutIt _DestEnd);将Src范围的元素反向复制到Dest范围中,也就是从Src范围最后一个元素开始复制,将这个引用Dest范围的_Begin ()的_OutputIterator元素放在Dest范围的最后一个位置,然后再每一次复制后反向移动.第二个参数应该是_DestEnd是_DestBeginstd:copy_ifcopy_if(_lnlt _SrcBegin,_lnlt _SrcEnd,_Out

9、It_DestBegin,_Pr _Pred);对一个序列中每个准备复制的元素执行一次.Callback,如果返回值为true,那么执行copy操作,否则不执行;返回了 Dest范围中最后一个复制的元素的后一个位置,这是为了配合past_the_end来删除多余的元素:复制完成后使用_Dest.erase(_CopyEndIt,past_the_end);来删除Dest范围多余的元素位置返回引用Dest范围的最后一个复制的元素的后一个位置的_OutputIteratorstd:copy_n()copy_n(_lnlt _SrcBeginf_Ty _Cnt,_Out工t_DestBegin);从

10、Src范围复制_Cnt个元素到Dest范围,第二个参数是一个指定要复制的元素个数的整数返回引用Dest范围的past_the_endstd:partition_copy()partition_copy(_lnlt _SrcBegin,_lnlt _SrcEnd,_0utit Destl, OutIt Dest2, Pr Pred);对一个序列的元素进行依据谓词返回的结果进行划分复制,首先对Src序列中的每一个元素执行一次谓词,如果返回true,那么将这个元素复制至LDestl,如果返回false,复制到_Dest2,复制之前需要使用resize ()重置Dest的空间;算法返回一个打包_Des

11、tl和_Dest2的one_past_the_last_copied 的std: :pair,利用这个pair可以删除多分配的空间打包弓1用_Destl和_Dest2的one_past_the_last_copied fl_OutputIterator 的std:pairstd:move()move(_lnlt _SrcBegin,_lnlt _SrcEnd,_OutIt_DestBegin);需要给元素提供移动赋值运算符,将Src序列的元素通过移动赋值运算符移动到Dest序列,在移动操作中,SrcObject被重置了,因为返回Dest范围的引用past_the_end 的_OutputIte

12、ratorDstObject接管了 SrcObject资源的所有权,这意味着在move操作过后Src序列中的对象不能再使用Std:move_backward()move_backward(_lnlt _SrcBeginz_lnlt _SrcEnd,_OutIt _DstEnd)使用了和std: :move ()相同的移动机制,但是按照从最后一个元素向第一个元素的顺序进行移动返回Dest范围的引用_Begin()的_OutputIteratorstd:replace()replace(_FwdIt 一First,_FwdIt _Last, const _Ty&_01dValz const _Ty

13、& NewVal);这个算法将一个范围中的匹配某个值的元素替换为第三个参数指定的新值voidstd: : replace ,if ()replace_if (_FwdIt _First, _FwdIt _Last, _Pr _Pred,const _Ty& _NewVal);这个算法将一个范围中的匹配某个谓词的元素替换为第三个参数指定的新值voidstd:remove()remove(_FwdIt _First,_Fwd工t _Last,const _Ty&,Val);这个算法并不是将序列中与_Val匹配的元素直接删除,而是将它们移动到容器的末端,然后返回引用第一个被移除的元素的iterato

14、r,可以利用这个iterator和end ()将被移除的元素彻底擦除返回引用第一个被移除的元素的 _Fwd 工 teratorstd:remove_if()remove_if(_FwdIt _First,_FwdIt _Last,_Pr _Pred);这个算法并不是将序列中与谓词匹配的兀素直接删除,而是将它们移动到容器的末端,然后返回引用第一个被移除的元素的iterator,可以利用这个iterator和end ()将被移除的元素彻底擦除返回引用第一个被移除的元素Kj_FwdIteratorstd:unique()unique(_FwdIt _First,_FwdIt _Last /*,_Pr _Pred)*/;std: :unique 算法是特殊的 std: :remove 算法,和后者一样,std: :unique并不是直接将重复的元素删除,而是将它们全部移动到容器的尾端,然后返回引用第一个被移除的元素的返回引用第一个被移除的元素J_FwdIteratoriterator,可以利用这个 iterator 和 end()将被移除的元素彻底擦除std:unique_copyunique(_FwdIt _SrcBeginz _FwdIt _SrcEndz _OutIt_DestBegin /*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服