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...