STL中常用的查詢演算法

2021-10-05 06:05:36 字數 2481 閱讀 8203

adjacent_find()

在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的迭代器。否則返回past-the-end。

vectorvecint;

vecint.push_back(1);

vecint.push_back(2);

vecint.push_back(2);

vecint.push_back(4);

vecint.push_back(5);

vecint.push_back(5);

vector::iterator it = adjacent_find(vecint.begin(), vecint.end());           //*it == 2

binary_search

在有序序列中查詢value,找到則返回true。注意:在無序序列中,不可使用。

setsetint;

setint.insert(3);

setint.insert(1);

setint.insert(7);

setint.insert(5);

setint.insert(9);

bool bfind = binary_search(setint.begin(),setint.end(),5);

count() 

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

vectorvecint;

vecint.push_back(1);

vecint.push_back(2);

vecint.push_back(2);

vecint.push_back(4);

vecint.push_back(2);

vecint.push_back(5);

int icount = count(vecint.begin(),vecint.end(),2);  //icount==3

count_if()

假設vectorvecinta,vecinta包含1,3,5,7,9元素

//先定義比較函式

bool greaterthree(int inum)

else

}int icount = count_if(vecinta.begin(), vecinta.end(), greaterthree);

//此時icount == 4

find()

vectorvecint;

vecint.push_back(1);

vecint.push_back(3);

vecint.push_back(5);

vecint.push_back(7);

vecint.push_back(9);

vector::iterator it = find(vecint.begin(), vecint.end(), 5);               //*it == 5

find_if()

find_if:   使用輸入的函式代替等於操作符執行find。返回被找到的元素的迭代器。

假設vectorvecinta,vecinta包含1,3,5,3,9元素

vector::it = find_if(vecint.begin(),vecint.end(),greaterthree);

此時 *it==3, *(it+1)==5, *(it+2)==3, *(it+3)==9

#include using namespace std;

#include "string"

#include #include #include "set"

#include #include "functional"

#include "iterator" //輸出流迭代器的標頭檔案

//adjacent_find找到相鄰的首次相等的兩個元素,並且返回指向第乙個元素的迭代器

void adjacent_find()

else

int index = distance(v1.begin(),it); //返回下標

cout << index << endl; //輸出:1 因為下標是從0開始的

}//0 1 2 3 ...... n-1

//二分法 1k=1024 10次,速度快

void binary_search()

else }

//統計

void count()

//一元謂詞

bool greatthree(int inum)

return false;

}//有條件的統計

void count_if()

//查詢

void find()

else }

//有條件的查詢

void find_if()

else }

void main()

C 提高 STL中常用的查詢演算法

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

STL中常用的排序演算法

merge 例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素 vecintc.resize 9 擴大容量 merge vecinta.begin vecinta.end vecintb....

演算法競賽中常用的STL

toc 可以理解為bit這個資料型別的陣列 即取值只為0 1 大多數情況下,每個元素所佔記憶體確實只有1bit,是bool型別的1 8。方便各種位操作的進行。構造方法 都需要在定義時指明長度 123 4567 8 預設 std bitset 16 foo 填充0 整數 std bitset 16 f...