STL常用的查詢演算法 13

2021-07-23 08:36:26 字數 3771 閱讀 9755

函式名

標頭檔案函式功能

adjacent_find

在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的forwarditerator .否則返回last.過載版本使用輸入的二元操作符代替相等的判斷

函式原形

templatefwdit adjacent_find(fwdit first, fwdit last);

templatefwdit adjacent_find(fwdit first, fwdit last, pred pr);

binary_search

在有序序列中查詢value,找到返回true.過載的版本實用指定的比較函式物件或函式指標來判斷相等

函式原形

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

templatebool binary_search(fwdit first, fwdit last, const t& val,pred pr);

count

利用等於操作符,把標誌範圍內的元素與輸入值比較,返回相等元素個數

函式原形

templatesize_t count(init first, init last,const t& val, dist& n);

count_if

利用輸入的操作符,對標誌範圍內的元素進行操作,返回結果為true的個數

函式原形

templatesize_t count_if(init first, init last, pred pr);

equal_range

功能類似equal,返回一對iterator,第乙個表示lower_bound,第二個表示upper_bound

函式原形

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

templatepairequal_range(fwdit first, fwdit last,const t& val, pred pr);

find

利用底層元素的等於操作符,對指定範圍內的元素與輸入值進行比較.當匹配時,結束搜尋,返回該元素的乙個inputiterator

函式原形

templateinit find(init first, init last, const t& val);

find_end

在指定範圍內查詢"由輸入的另外一對iterator標誌的第二個序列"的最後一次出現.找到則返回最後一對的第乙個forwarditerator,否則返回輸入的"另外一對"的第乙個forwarditerator.過載版本使用使用者輸入的操作符代替等於操作

函式原形

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

templatefwdit1 find_end(fwdit1 first1, fwdit1 last1,fwdit2 first2, fwdit2 last2, pred pr);

find_first_of

在指定範圍內查詢"由輸入的另外一對iterator標誌的第二個序列"中任意乙個元素的第一次出現。過載版本中使用了使用者自定義操作符

函式原形

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

templatefwdit1 find_first_of(fwdit1 first1, fwdit1 last1,fwdit2 first2, fwdit2 last2, pred pr);

find_if

使用輸入的函式代替等於操作符執行find

templateinit find_if(init first, init last, pred pr);

lower_bound

返回乙個forwarditerator,指向在有序序列範圍內的可以插入指定值而不破壞容器順序的第乙個位置.過載函式使用自定義比較操作

函式原形

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

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

upper_bound

返回乙個forwarditerator,指向在有序序列範圍內插入value而不破壞容器順序的最後乙個位置,該位置標誌乙個大於value的值.過載函式使用自定義比較操作

函式原形

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

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

search

給出兩個範圍,返回乙個forwarditerator,查詢成功指向第乙個範圍內第一次出現子串行(第二個範圍)的位置,查詢失敗指向last1,過載版本使用自定義的比較操作

函式原形

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

templatefwdit1 search(fwdit1 first1, fwdit1 last1, fwdit2 first2, fwdit2 last2, pred pr);

search_n

在指定範圍內查詢val出現n次的子串行。過載版本使用自定義的比較操作

函式原形

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

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

查詢演算法(13個):判斷容器中是否包含某個值

#include #include#include #include #include #include #include #include #includeusing namespace std;

//查詢是否有相鄰元素 返回第乙個重複元素的下標

void display()

else }

void display4()

; int * p;

p = find (myints, myints+4, 30);

cout<<*p<::iterator it = find(v.begin(),v.end(),3);

int num = distance(v.begin(),it);

cout<<"num:"v.push_back(1);

v.push_back(2);

v.push_back(3);

v.push_back(3);

v.push_back(3);

v.push_back(5);

v.push_back(7);

v.push_back(9);

vector::iterator it = find_if(v.begin(),v.end(),findfirsteven);

int num = distance(v.begin(),it);

cout<<"num:"<

STL中常用的查詢演算法

adjacent find 在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的迭代器。否則返回past the end。vectorvecint vecint.push back 1 vecint.push back 2 vecint.push back ...

STL 常用演算法(二)查詢演算法

演算法簡介 1 find 功能描述 函式原型 include include include void test01 查詢容器中是否有 5 這個元素 vector int iterator it find v.begin v.end 5 if it v.end else class person 過...

STL學習3常用演算法3 4常用查詢演算法

1 find 1.1 按元素查詢 2.2 提供查詢迭代器區間與查詢元素 返回迭代器 2 find if 2.1 按條件查詢 2.2 查詢區間 迭代器 查詢條件 一元謂詞,若為二元需繫結 2.3 返回迭代器 2.4 若為自定義資料型別 需要過載判斷條件 3 count 3.1 按元素統計 3.2 統計...