8 非變異演算法

2021-07-29 03:52:35 字數 3548 閱讀 9127

序號功能

函式名稱

說明迴圈

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