亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

STL常用算法

2019-11-10 17:08:56
字體:
來源:轉載
供稿:網友

#include <algorithm>

算法

常用版本

描述

返回Type

std::find()

find(_InIt _Fisrt,_InIt _Last,_Ty& _Val);

從兩個迭代器指定的范圍中查找指定值

引用被查找的值的iterator或end()

std::find_if()

find_if(_InIt _Fisrt,_InIt _Last, _CallBack);

從兩個迭代器指定的范圍中查找與回調謂詞匹配的實例

與謂詞匹配的實例的iterator或end()

std::find_if_not()

find_if_not(_InIt _Fisrt,_InIt _Last,_Func _CallBack);

從迭代器范圍中返回第一個不符合謂詞的元素

第一個不符合謂詞的元素的iterator或end()

std::count()

count(_InIt _First,_InIt _Last,_Ty& _Val);

求得一個元素序列中與第三個參數相符的元素的個數

與第三個參數匹配的元素的int個數

std::count_if()

count_if(_InIt _First,_InIt _Last, _CallBack);

求得一個序列中與謂詞匹配的元素的個數

符合條件元素的int個數

std::generate()

generate(_FwdIt _First,_FwdIt _Last, _CallBack);

通過特定值填充一個迭代器范圍

void

std::max()

max(_Left,_Right /*,PRedicate*/);

通過Operator<或用戶提供的二元謂詞比較任意類型的兩個元素

返回較大的一個元素的const引用

std::min()

min(_Left,_Right /*,Predicate*/);

通過operator<或用戶提供的二元謂詞比較任意類型的兩個元素

較小的一個元素的const引用

std::max_element()

max_element(_FwdIt _First,_FwdIt _Last /*,_Pred*/);

從一組任意類型的元素元素序列中查找"最大"的一個

引用"最大”的元素的iterator

std::min_element()

min_element(_FwdIt _First,_FwdIt _Last /*,_Pred*/);

從一組任意類型的元素元素序列中查找"最小"的一個

引用"最小"的元素的iterator

adjacent_find()

adjacent_find(_FwdIt _First, _FwdIt _Last/*,_Pred*/);

從一組任意類型的元素序列中查找有重復的元素

引用重復的第一個元素的iterator或者end()

std::all_of()

all_of(_InIt _First,_InIt _Last,Pr _Pred);

當一組元素序列全部與謂詞匹配時返回true否則返回false

bool

std::any_of()

any_of(_InIt _First,_InIt _Last,_Pr _Pred);

當一組元素序列中任意一個元素與謂詞匹配時返回true否則返回false

bool

std::none_of()

none_of(_InIt _First,_InIt _Last,_Pr _Pred);

當一組元素序列全部都不與謂詞匹配時返回true否則返回false

bool

std::for_each()

for_each(_InIt _First,_InIt _Last,_CallBack);

對指定范圍內的所有元素執行一次_CallBack

_CallBackl類型

std::transform()

transform(_InIt_SrcFirst,_InIt _SrcLast,_OutIt_DestBegin,_CallBack);

對指定范圍的元素執行回調后生成新的元素,然后將這些新元素保存在第三個參數指定的目標范圍中

引用Dest范圍的past-the-end的_OutputIterator

-

transform(_InIt _First1,_InIt _Last,_InIt _First2,_OutIt _DestBegin,_CallBack); 

對兩個指定序列的元素調用二元謂詞,并將結果存入到第四個參數指定的容器中

引用Dest范圍的past-the-end的_OutputIterator

std::equal()

equal(_InIt _First1,_InIt _Last1,_InIt _First2 /*,_Pred*/);

對兩個不同類型的容器比較對應位置的值,當全部相等或者全部符合謂詞時返回true否則返回false

 

bool

std::copy()

 

copy(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _DestBegin);

將一個序列的元素復制到另一個序列中,Src范圍與Dest范圍不能相同,但可以重疊,std::copy不會向目標序列中插入元素,而會直接修改元素,使用前必須配合_Dest序列的resize()函數給Dest序列重分配足夠的空間

 

引用Dest范圍past_the_end的_OutputIterator

std::copy_backward()

copy_backward(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _DestEnd);

將Src范圍的元素反向復制到Dest范圍中,也就是從Src范圍最后一個元素開始復制,將這個元素放在Dest范圍的最后一個位置,然后再每一次復制后反向移動.第三個參數應該是_DestEnd而不是_DestBegin

引用Dest范圍的_Begin()的_OutputIterator

 

std::copy_if

 

 

copy_if(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _DestBegin,_Pr _Pred);

對一個序列中每個準備復制的元素執行一次_Callback,如果返回值為true,那么執行copy操作,否則不執行;返回了Dest范圍中最后一個復制的元素的后一個位置,這是為了配合past_the_end來刪除多余的元素:復制完成后使用_Dest.erase(_CopyEndIt,past_the_end);來刪除Dest范圍多余的元素位置

 

 

返回引用Dest范圍的最后一個復制的元素的后一個位置的_OutputIterator

std::copy_n()

copy_n(_InIt _SrcBegin,_Ty _Cnt,_OutIt _DestBegin);

從Src范圍復制_Cnt個元素到Dest范圍,第二個參數是一個指定要復制的元素個數的整數

返回引用Dest范圍的past_the_end

 

std::partition_copy()

 

 

 

partition_copy(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _Dest1,_OutIt _Dest2,_Pr _Pred);

對一個序列的元素進行依據謂詞返回的結果進行劃分復制,首先對Src序列中的每一個元素執行一次謂詞,如果返回true,那么將這個元素復制到_Dest1,如果返回false,復制到_Dest2,復制之前需要使用resize()重置Dest的空間;算法返回一個打包_Dest1和_Dest2的one_past_the_last_copied的std::pair,利用這個pair可以刪除多分配的空間

 

 

打包引用_Dest1和_Dest2的one_past_the_last_copied的_OutputIterator的std::pair

std::move()

 

move(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _DestBegin);

需要給元素提供移動賦值運算符,將Src序列的元素通過移動賦值運算符移動到Dest序列,在移動操作中,SrcObject被重置了,因為DstObject接管了SrcObject資源的所有權,這意味著在move操作過后Src序列中的對象不能再使用

返回Dest范圍的引用past_the_end的_OutputIterator

Std::move_backward()

move_backward(_InIt _SrcBegin,_InIt _SrcEnd,_OutIt _DstEnd)

使用了和std::move()相同的移動機制,但是按照從最后一個元素向第一個元素的順序進行移動

返回Dest范圍的引用_Begin()的_OutputIterator

std::replace()

replace(_FwdIt _First,_FwdIt _Last,const _Ty& _OldVal,const _Ty& _NewVal);

這個算法將一個范圍中的匹配某個值的元素替換為第三個參數指定的新值

void

std::replace_if()

replace_if(_FwdIt _First,_FwdIt _Last,_Pr _Pred,const _Ty& _NewVal);

這個算法將一個范圍中的匹配某個謂詞的元素替換為第三個參數指定的新值

void

 

std::remove()

 

remove(_FwdIt _First,_FwdIt _Last,const _Ty& _Val); 

這個算法并不是將序列中與_Val匹配的元素直接刪除,而是將它們移動到容器的末端,然后返回引用第一個被移除的元素的iterator,可以利用這個iterator和end()將被移除的元素徹底擦除

 

返回引用第一個被移除的元素的_FwdIterator

 

std::remove_if()

 

remove_if(_FwdIt _First,_FwdIt _Last,_Pr _Pred);

這個算法并不是將序列中與謂詞匹配的元素直接刪除,而是將它們移動到容器的末端,然后返回引用第一個被移除的元素的iterator,可以利用這個iterator和end()將被移除的元素徹底擦除

 

返回引用第一個被移除的元素的_FwdIterator

std::unique()

 

 

unique(_FwdIt _First,_FwdIt _Last /*,_Pr _Pred)*/;

std::unique算法是特殊的std::remove算法,和后者一樣,std::unique并不是直接將重復的元素刪除,而是將它們全部移動到容器的尾端,然后返回引用第一個被移除的元素的iterator,可以利用這個iterator和end()將被移除的元素徹底擦除

 

 

返回引用第一個被移除的元素的_FwdIterator

std::unique_copy

unique(_FwdIt _SrcBegin,_FwdIt _SrcEnd,_OutIt _DestBegin  /*,_Pr _Pred*/);

std::unique()的基本形式是就地操作數據,std::unique_copy則是將操作的結果復制到Dest范圍中

返回引用Dest范圍的元素的_OutputIterator

std::reverse()

reverse(_BidIt _First,_BidIt _Last);

將范圍中的第一個元素和最后一個元素交換,第二個元素和倒數第二個元素交換,依此類推

Void

std::reverse_copy()

reverse_copy(_BidIt _SrcBegin,_BidIt _SrcEnd,_OutIt _DestBegin);

std::reverse是就地操作數據,std::reverse_copy將結果復制到Dest范圍中

返回引用Dest范圍的元素的_OutputIterator

std::sort()

sort(_RanIt _First,_RanIt _Last /*,_Pr _Pred*/);

將范圍中的元素按operator<或_CallBack進行排序

Void

std::merge()

 

merge(_InIt _SrcBegin1,_InIt _SrcEnd1,_InIt _SrcBegin2,_InIt _SrcEnd2,_OutIt _DestBegin, /*,_Pr _Prd*/);

將兩個排好序的Src序列合并成一個元素序列,然后將結果復制到Dest序列中,并且依然保持排序的順序,結果是一個包含兩個Src序列的所有元素的有序序列,注意一定要使用兩個排好序的序列進行merge操作

 

引用Dest序列的past_the_end的_OutputIterator

std::is_sorted()

sort(_FwdIt _First,_FwdIt _Last /*,_Pr _Pred*/);

驗證一個序列是否是有序序列.如果是,返回true,否則返回false

bool

 

std:random_shuffle()

 

random_shuffle(_RanIt _First,_RanIt _Last /*,_Fn& _Func*/

將一個序列的順序打亂,這個算法適用于洗牌之類的任務,對一個版本默認使用標準C庫的rand()函數,第二個版本需要提供一個隨機數生成器, 以適應不同問題領域的隨機性

 

void

 

集合算法

 

std::includes()

includes(_InIt _First1,_InIt _Last1,_InIt _First2,_InIt _Last2 /*,_Pr _Pred*/);

驗證第二個序列是否是第一個序列的子集,注意不是真子集,而是子集,如果是返回true,否則返回false

bool

 

 

 

std::set_union()

 

set_union(_InIt _SrcBegin1,_InIt _SrcEnd1,_InIt _SrcBegin2,_InIt _SrcEnd2,_OutIt _DestBegin /*,_Pr _Pred*/);

計算兩個有序序列的并集,然后將并集的結果存入第四個參數指定的Dest序列中,注意在計算前必須給Dest容器分配足夠的空間,因為Dest范圍最大是_Src1和_Src2的size()和,所以在進行合并后有可能會留下一些空間,set_union算法返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的iterator,利用它可以將Dest中多余的空間刪除

返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的_OutputIterator

 

std::set_intersection()

set_intersection(

_InIt _SrcBegin1,_InIt _SrcEnd1,_InIt _SrcBegin2,_InIt _SrcEnd2,_OutIt _DestBegin /*,_Pr _Pred*/);

計算兩個有序序列的交集,然后將交集的結果存入第四個參數指定的Dest序列中,注意在計算前必須給Dest容器分配足夠的空間,因為Dest范圍最大是兩個_Src范圍的size的最大值,所以在進行取交集后有可能會留下一些空間,set_union算法返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的iterator,利用它可以將Dest中多余的空間刪除

 

返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的_OutputIterator

 

 

 

 

std ::set_difference()

 

set_difference(

_InIt _SrcBegin1,_InIt _SrcEnd1,_InIt _SrcBegin2,_InIt _SrcEnd2,_OutIt _DestBegin /*,_Pr _Pred*/);

計算兩個有序序列的集合差,(集合差:所有存在于第一個集合,但是不存在與第二個集合中的所有元素),然后將求集合差的結果存入第四個參數指定的Dest序列中,注意在計算前必須給Dest容器分配足夠的空間,因為Dest范圍最大是兩個_Src范圍的size的最大值,所以在進行取交集后有可能會留下一些空間,set_union算法返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的iterator,利用它可以將Dest中多余的空間刪除

 

返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的_OutputIterator

 

std::set_symmetric_difference()

set_symmetric_difference(

_InIt _SrcBegin1,_InIt _SrcEnd1,_InIt _SrcBegin2,_InIt _SrcEnd2,_OutIt _DestBegin /*,_Pr _Pred*/);

計算兩個有序序列的對稱集合差,(對稱集合差:所有存在于某一個集合,但是不存在與第二個集合中的元素),然后將求對稱集合差的結果存入第四個參數指定的Dest序列中,注意在計算前必須給Dest容器分配足夠的空間,因為Dest范圍最大是_Src1和_Src2的size()和,所以在進行取交集后有可能會留下一些空間,set_union算法返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的iterator,利用它可以將Dest中多余的空間刪除

 

 

返回一個引用Dest范圍中最后一個被添加進去的元素的后一個位置的_OutputIterator

Warning: 務必要確保Dest范圍足夠大,足以保存操作的結果.

對于set_union()和set_symmetric_difference(),結果大小的上限是兩個輸入范圍的總和.

對于set_intersection()和set_difference(),結果大小的上限是兩個輸入范圍大小中的最大值

原文鏈接:http://blog.csdn.net/robin__chou/article/details/53204921


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情国产精品| 91精品久久久久久久久中文字幕| 欧美日韩亚洲视频一区| 欧美成人免费大片| 亚洲视频一区二区三区| 91精品久久久久久| 亚洲最大福利视频网站| 久久久国产精品x99av| 亚洲老头同性xxxxx| 亚洲欧美成人网| 亚洲成人精品视频| 91av国产在线| 九色91av视频| 久久亚洲精品视频| 国产精品久久久久久久久久久久久久| 亚洲午夜未删减在线观看| 国产v综合ⅴ日韩v欧美大片| 久久久久久18| 欧美又大又硬又粗bbbbb| 国产成人拍精品视频午夜网站| 色婷婷亚洲mv天堂mv在影片| 国产亚洲美女精品久久久| 91国产高清在线| 久久午夜a级毛片| 精品香蕉在线观看视频一| 一区二区在线视频播放| 成人精品久久久| 色偷偷av亚洲男人的天堂| 欧美视频在线观看免费网址| 青草青草久热精品视频在线观看| 亚洲欧洲av一区二区| 日韩精品视频免费在线观看| 日韩成人在线网站| 欧美激情精品久久久久久蜜臀| 狠狠做深爱婷婷久久综合一区| 最近2019中文字幕第三页视频| 国产丝袜一区二区三区| 美女久久久久久久久久久| 欧美精品成人91久久久久久久| 免费不卡在线观看av| 91牛牛免费视频| 成人激情视频在线观看| 亚洲欧美日韩中文在线| 亚洲国产精品视频在线观看| 成人欧美在线视频| 国产成人中文字幕| 亚洲欧美国产另类| 亚洲精品欧美一区二区三区| 热re99久久精品国产66热| 国产精品直播网红| 日韩美女视频免费看| 97福利一区二区| 久久久人成影片一区二区三区| 亚洲天堂av综合网| 欧美野外猛男的大粗鳮| 国产精品入口免费视频一| 欧美激情第1页| 日韩电影在线观看永久视频免费网站| 色老头一区二区三区| 国产精品久久久久久网站| 5566成人精品视频免费| 国产精品天天狠天天看| 欧美极品在线视频| 成人性生交大片免费观看嘿嘿视频| 一区二区三区四区精品| 日韩av在线高清| 久青草国产97香蕉在线视频| 国产999精品视频| 最近2019年中文视频免费在线观看| 91香蕉电影院| 国产日韩欧美在线播放| 日韩高清电影好看的电视剧电影| 777精品视频| 中文字幕亚洲图片| 精品国模在线视频| 亚洲国产精品一区二区三区| 亚洲国产女人aaa毛片在线| 国产精品电影网站| 成人羞羞国产免费| 色偷偷偷亚洲综合网另类| 亚洲天堂男人天堂女人天堂| 国产欧美日韩中文| 欧美久久精品午夜青青大伊人| 国产精品综合不卡av| 亚洲成年网站在线观看| 中文字幕日韩在线观看| 亚洲欧美www| 亚洲欧美三级伦理| 久久国产精品偷| 91免费版网站入口| 国产精品一区专区欧美日韩| 亚洲欧美日韩成人| 国产精品黄色影片导航在线观看| 黄色91在线观看| 国产色婷婷国产综合在线理论片a| 久久久久久久一| 在线成人免费网站| 久久久亚洲欧洲日产国码aⅴ| 日日摸夜夜添一区| 久久精品国产99国产精品澳门| 热99精品里视频精品| 国产精品pans私拍| 欧美精品在线免费观看| 日本成熟性欧美| 欧美性色19p| 中文字幕日韩专区| 日韩亚洲在线观看| 欧美日韩免费在线| 热门国产精品亚洲第一区在线| 亚洲视频在线看| 国产综合福利在线| 国产日韩av高清| 欧美日韩亚洲天堂| 久热在线中文字幕色999舞| 久久久精品久久| 日韩美女写真福利在线观看| 国内精品久久久久久中文字幕| 亚洲变态欧美另类捆绑| 亚洲一区亚洲二区亚洲三区| 日韩中文字幕免费看| 亚洲一区二区三区777| 亚洲最大的免费| 国产精品国内视频| 亚洲美女动态图120秒| 久久影视电视剧免费网站清宫辞电视| 久久艳片www.17c.com| 亚洲精品女av网站| 亚洲精品国精品久久99热一| 91av在线不卡| 最新69国产成人精品视频免费| 欧美在线视频一二三| 日韩一区二区三区xxxx| 日韩中文字幕在线观看| 欧美日本在线视频中文字字幕| 国产欧美日韩丝袜精品一区| 久久99国产综合精品女同| 在线亚洲欧美视频| 欧美不卡视频一区发布| 色偷偷偷综合中文字幕;dd| 日韩成人在线免费观看| 日韩电影免费观看中文字幕| 日韩亚洲欧美中文在线| 精品在线观看国产| 亚洲精品国产精品国自产观看浪潮| 亚洲欧美日韩第一区| 亚洲第一免费网站| www国产精品视频| 久久久影视精品| 国产精品久久久久久av福利软件| 中国人与牲禽动交精品| 亚洲精品久久久久中文字幕欢迎你| 精品亚洲一区二区三区在线观看| 亚洲日韩中文字幕| 北条麻妃在线一区二区| 欧美日韩成人在线播放| 国产精品日韩久久久久| 91精品国产一区| 日韩在线国产精品| 国产一区私人高清影院| 成人网在线免费看| 亚洲丁香久久久| 欧美性感美女h网站在线观看免费| 国产成人精品日本亚洲| 国产日韩精品一区二区|