序號功能
函式名稱
說明迴圈
for_each
遍歷容器元素,對每元素執行相同的操作
查詢find
在序列中找出某個值的第一次出現的位置
find_if
在序列中找出符合某謂詞的第乙個元素
find_first_of
在序列中找出第一次出現指定值集中之值的位置
adjacent_find
在序列中找出第一次相鄰值相等元素的位置
find_end
在序列中找出一子串行的最後一次出現的位置
search
在序列中找出一子串行的第一次出現的位置
search_n
在序列中找出一值連續n次出現的位置
計數count
在序列中統計某個值出現的次數
count_if
在序列中統計與某謂詞(表示式)匹配的次數
比較equal
兩個序列中的對應元素都相同時為真
mismatch
找出兩個序列相異的第乙個元素
1.1、for_each
#include#include#includeusing namespace std;
class print
int getsum()
int getmax()
int getmin()
void operator()(int x)
else
if (min>x)
}sum += x;
count++;
}};int main()
; print p = for_each(ivec.begin(), ivec.end(), print());
cout << "max: " << p.getmax() << endl;
cout << "min: " << p.getmin() << endl;
cout << "sum: " << p.getsum() << endl;
}
1.2、for_each 採用模板傳參技術
#include#include#include#includeusing namespace std;
template class print:public unary_function
t getsum()
t getmax()
t getmin()
_outpara operator()(t x)
else
if (min>x)
}sum += x;
count++;
}};int main()
; printp = for_each(ivec.begin(), ivec.end(), print());
cout << "max: " << p.getmax() << endl;
cout << "min: " << p.getmin() << endl;
cout << "sum: " << p.getsum() << endl;
}
2、查詢
#include#include#include#include#includeusing namespace std;
int main()
; //find()只能用於找數字或者單個字元,若需找字串匹配需用str.find() 或者search() 沒有str.search()這種形式
vector::iterator ix = find(ivec.begin(), ivec.end(), 5);
if (ix != ivec.end())
cout << "find it" << endl;
else
cout << "not find" << endl;
string::iterator iter=find(str.begin(), str.end(), 'y');
if (iter == str.end())
cout << "not find" << endl;
else
cout << "find it: " << iter - str.begin() << endl;
int pos=str.find(str1);
if (pos == string::npos)
cout << "not find" << endl;
else
cout << "find it: " <(), 3));
if (ix != ivec.end())
cout << "find it" << endl;
else
cout << "not find" << endl;
//find_first_of()與str.find_first_of()用法區別
iter = find_first_of(str.begin(), str.end(), str1.begin(),str1.end());
if (iter == str.end())
cout << "not find" << endl;
else
cout << "find it: " << iter - str.begin() << endl;
pos = str.find_first_of("sdaadosf");
if (pos != string::npos)
cout << "find it: " << pos << endl;
else
cout << "not find" << endl;
//adjacent_find() 查詢首次相鄰的兩個元素
ix = adjacent_find(ivec.begin(), ivec.end());
if (ix != ivec.end())
cout << "adjacent find it: " <3、計數
#include#include#includeusing namespace std;
class student
bool operator==(int grade) };
class match
bool operator()(student &s) };
int main()
4、比較
#include#includeusing namespace std;
int main()
; int a2 = ;
int n = sizeof(a1) / sizeof(int);
cout << "相比後" << equal(a1, a1 + n, a2) << endl;
pairresult = mismatch(a1, a1 + n, a2);
cout << *(result.first) << " " << *(result.second) << endl;
}
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 ...
STL 非變異演算法之計數
本博文主要講解了count count if 的使用 例項 include include using namespace std int main int len sizeof a sizeof int cout 請輸入你想查詢的數 cin wantnum int ncount count a,a...
stl 變異演算法
void swap t a,t b swap 交換兩個元素,結果改變實參fwdit remove fwdit first,fwdit last,const t val remove 刪除具有給定值的元素fwdit remove if fwdit first,fwdit last,pred pr 刪除...