STL非修改演算法

2021-04-23 19:40:55 字數 4507 閱讀 6377

由於stl演算法都是通過迭代器間接處理容器,下面定義istream_iteratorinit,ostream_itreatoroutit,forward_iteratorfwdit,bidirectional_iterator bidit,random_iterator ranit

非修改演算法:

演算法用法

說明adjacent_find

fwdit adjacent_find(fwdit first,fwdit last);

fwdit adjacent_find(fwdit first,fwdit last,pred pr);在[first,last)查詢相同元素的首次出現或能使pr(elem,nextelem)為true的元素的位置 ,函式查詢成功返回位置,失敗返回last

binary_search

bool binary_search(fwdit first,fwdit last,const t& val);

bool binary_search(fwdit first,fwdit last,const t& val,pred pr);在區間[first,last)中查詢元素val,如果找到返回true,否則返回false,第二種形式pr用於設定查詢準則

count

size_t count(init first,init last,const t& val);返回區間[first,last)上val出現的次數

count_if

size_t count_if(init first,init last,pred pr);返回區間[first,last)上滿足條件pr(elem)的元素個數

equal

bool equal(init1 first,init1 last,init2 x);

bool equal(init1 first,init1 last,init2 x,pred pr);判斷[first,last)與x開始的區間的元素是否相等,pr用於指定判斷函式

equal

pairequal_range(fwdit first,fwdit last,const t& val);

pairequal_range(fwdit first,fwdit last,const t& val,pred pr);返回元素val第一次出現的位置和最後出現的位置的下一位組成的對,pr指定比較演算法

lower_bound

fwdit lower_bound(fwdit first,fwdit last,const t& val);

fwdit lower_bound(fwdit first,fwdit last,const t& val,pred pr);返回已排序序列[first,last)中val首次出現的位置,pr指定比較演算法

upper_bound

fwdit upper_bound(fwdit first,fwdit last,const t& val);

fwdit upper_bound(fwdit first,fwdit last,const t& val,pred pr);返回已排序序列[first,last)中val最後一次出現的下乙個位置,pr指定比較演算法

find

init find(init first,init last,const t& val);在[first,last)之間查詢元素val,如果找到返回位置,找不到返回last

find_if

init find_if(init first,init last, pred pr);在[first,last)之間查詢能使函式pr返回true的元素,找到返回位置,否則返回last

find_end

fwdit1 find_end(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2);

fwdit1 find_end(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2, pred pr);在[first1,last1)之間查詢[first2,last2)最後出現的位置,如果找到返回位置,失敗返回last1,第二個函式的pr函式用於比較兩個容器的元素,在兩個容器的元素相等時返回true

find_first_of

fwdit1 find_first_of(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2);

fwdit1 find_first_of(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2, pred pr);在[first1,last1)之間查詢第一次出現[first2,last2)中元素的位置,找到返回位置,失敗返回last1,第二個函式pr用於比較兩個容器的元素是否相等

for_each

fun for_each(init first,init last, fun f);對[first,last)上的所有元素執行函式f(elem),返回值常被忽略

includes

bool includes(init1 first1,init1 last1,init2 first2,init2 last2);

bool includes(init1 first1,init1 last1,init2 first2,init2 last2, pred pr);判斷已排序序列[first1,last1)中是否包含區間已排序區間[first2,last2),pr指定元素的順序

mismatch

pairmismatch(init1 first,init1 last,init2 x);

pairmismatch(init1 first,init1 last,init2 x, pred pr);返回序列[first,last)與x開始的序列第乙個不匹配的位置的兩個迭代器組成的對

maxconst t& max(const t& x,const t& y);

const t& max(const t& x,const t& y, pred pr);返回x,y之間的較大者,pr(elem1,elem2)用於指定比較規則

max_element

fwdit max_element(fwdit first,fwdit last);

fwdit max_element(fwdit first,fwdit last, pred pr);返回區間[first,last)上最大值的位置,pr(elem1,elem2)用於指定比較規則

minconst t& min(const t& x,const t& y);

const t& min(const t& x,const t& y, pred pr);返回x,y之間的較小者,pr(elem1,elem2)用於指定比較規則

min_element

fwdit min_element(fwdit first,fwdit last);

fwdit min_element(fwdit first,fwdit last, pred pr);返回區間[first,last)上的最小值的位置,pr(elem1,elem2)用於指定比較規則

search

fwdit1 search(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2);

fwdit1 search(fwdit1 first1,fwdit1 last1,fwdit2 first2,fwdit2 last2, pred pr);在[first1,last1)中查詢子區間[first2,last2),如果找到返回在第乙個區間中的位置,失敗返回last1,第二種形式pr函式用於設定比較函式

search_n

fwdit search_n(fwdit first,fwdit last,dist n,const t& val);

fwdit search_n(fwdit first,fwdit last,dist n,const t& val, pred pr);在[first,last)中查詢連續n個val,如果找到返回在區間中的位置,失敗返回last,第二種形式pr用於設定比較函式

STL非修改演算法

由於stl演算法都是通過迭代器間接處理容器,下面定義istream iteratorinit,ostream itreatoroutit,forward iteratorfwdit,bidirectional iterator bidit,random iterator ranit 非修改演算法 演...

STL 之修改演算法

目錄 通過重新排列,刪除或改變元素的值來修改容器中的元素。修改演算法中改變元素順序,而不改變其值的演算法成為變異 mutating 標藍。copy copy backward fill fill n generate generate n inplace merge iter swap merge ...

STL 之修改演算法

目錄 通過重新排列,刪除或改變元素的值來修改容器中的元素。修改演算法中改變元素順序,而不改變其值的演算法成為變異 mutating 標藍。copy copy backward fill fill n generate generate n inplace merge iter swap merge ...