stl演算法解析之非變動性演算法

2021-07-22 09:12:18 字數 4145 閱讀 8568

函式

說明for_each()

對每個元素執行某操作

count()

返回元素個數

count_if()

返回滿足某一準則(條件)的元素個數

min_element()

返回最小值元素(以迭代器表示)

max_element()

返回最大值元素(以迭代器表示)

find()

搜尋等於某值的第乙個元素

find_if()

搜尋滿足某個準則的第乙個元素

search_n()

搜尋具有某特性的第一段「n個連續元素」

search()

搜尋某個子區間第一次出現的位置

find_end()

搜尋某個子區間最後一次出現的位置

find_first_of()

搜尋等於「某數個值之一」的第乙個元素

adjacent_find()

搜尋連續兩個相等(或符合特定準則)的元素

equal()

判斷兩區間是否相等

mismatch()

返回兩個序列的各組對應元素中,第一對不相等元素

lexicographical_compare()

判斷某一串行在字典順序下是否小於另一串行

1 for_each

unaryproc for_each(inputiterator beg,inputiterator end,unaryproc op);

(1)對區間[beg,end)中的每乙個元素呼叫: op(elem)

2 count 和 count_if (元素計數)

difference_type count(inputiterator beg,inputiterator end,constt & value);

difference_type count_if(inputiterator beg,inputiterator end,unarypredicate op);

(1)第一種形式會計算區間[beg,end)中元素值等於value的元素個數;

(2)第二種形式會計算區間[beg,end)中令以下一元判斷式 op(elem)結果為true的元素個數

3 min_element 和 max_element (最大值和最小值)

inputiterator min_element(inputiterator beg,inputiterator end);

inputiterator min_element(inputiterator beg,inputiterator end,compfunc op);

inputiterator max_element(inputiterator beg,inputiterator end);

inputiterator max_element(inputiterator beg,inputiterator end,compfunc op);

(1)返回區間[beg,end)中最小或最大元素的位置.

(2)無op引數的版本,以operator《進行元素的比較.

(3)op用來比較兩個元素 op(elem1,elem2),若第乙個元素小於第二個元素,應當返回true.

(4)若存在多個最小值或最大值,上述演算法返回找到的第乙個最小或最大值。

4 find 和 find_if (搜尋第乙個匹配元素)

inputiterator find(inputiterator beg,inputiterator end,const t & value);

inputiterator find_if(inputiterator beg,inputiterator end,unarypredicate op);

(1)第一種形式返回區間[beg,end)中第乙個元素等於value的元素位置。

(2)第二種形式返回[beg,end)中令一下一元判斷式op(elem)結果為true的第乙個元素。

5 search_n (搜尋前n個連續匹配值)

inputiterator search_n(inputiterator beg,inputiterator end,size count,const t & value);

inputiterator search_n(inputiterator beg,inputiterator end,size count,const t & value,binarypredicate op);

(1)第一種形式返回區間[beg,end)中第一組「連續count個元素值全等於value」的元素位置。

(2)第二種形式返回區間[beg,end)中第一組「連續count個造成一元判斷式op(elem,value)結果為true」的元素位置。

6 search ( 搜尋第乙個子區間)

forwarditertor serach(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend);

forwarditertor1 serach(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend,binarypredicate op);

(1)兩種形式返回區間[beg,end)內和「區間[searchbeg,searchend)完全吻合」的第乙個子區間內的第乙個元素的位置。

(2)第一種形式中,子區間的元素必須完全等於[searchbeg,searchend)的元素。

(3)第二種形式中,子區間的元素和[searchbeg,searchend)的對應元素必須造成二元判斷式op(elem,searchelem)的判斷式的結果為true。

7 find_end (搜尋最後乙個子區間)

forwarditertor find_end(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend);

forwarditertor1 find_end(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend,binarypredicate op);

說明同上:search

7 find_first_of (搜尋某些元素第一次出現的地點)

forwarditertor find_end(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend);

forwarditertor1 find_end(forwarditertor beg,forwarditertor end,

forwarditertor searchbeg,forwarditertor searchend,binarypredicate op);

(1)第一種形式返回第乙個「既在區間[beg,end)中出現,也在區間[searchbeg,searchend)中出現的元素的位置」。

(2) 第二種形式返回區間[beg,end)中第乙個這樣的元素:它和區間[searchbeg,searchend)中每乙個元素執行op(elem,searchelem)結果是true。

8 adjacent_find (搜尋兩個連續且相等的元素)

inputitertor adjacent_find(inputitertor beg,inputitertor end);

inputitertor adjacent_find(inputitertor beg,inputitertor end,binarypredicate op)

(1)第一種形式返回區間[beg,end)中第一對「連續兩個相等元素「」之中的第乙個元素的位置。

(2)第二種形式返回區間[beg,end)中第一對「連續兩個元素使二元判斷式op(elem,nextelem)的結果為true」的第乙個元素的位置。

變動性演算法modifying algorithms

目的 變動內容 注意 目標區間不能是關聯式容器 所有具有單一目標區間的演算法,都返回最後乙個被複製元素的下乙個位置 一。複製 1.outputiterator copy inputiterator sourcebegin,inputiterator sourceend,outputiteratord...

STL 非變異演算法之查詢

本博文主要講了find find if find first of find end adjacent find search search n 這些stl中的查詢演算法 例項1 include include include using namespace std bool myless int ...

讀書筆記 演算法之變動性演算法

複製元素 copy begin,end,destbegin copy backward sourcebegin,source end,destend 將區間的元素複製到destbegin destend裡面去 copy正向,copy backward反向 stl沒有copy if 只有remove ...