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

2021-09-11 22:48:46 字數 1756 閱讀 1248

1 、find

1.1  按元素查詢

2.2  提供查詢迭代器區間與查詢元素  返回迭代器

2、find_if 

2.1  按條件查詢

2.2   查詢區間(迭代器) 查詢條件(一元謂詞,若為二元需繫結)

2.3   返回迭代器

2.4   若為自定義資料型別  需要過載判斷條件 

3、count

3.1 按元素統計

3.2  統計區間(迭代器) 元素

3.3 返回int型別  統計結果

4、count_if

4.1  按條件統計

4.2  統計區間(迭代器) 條件(謂詞)

4.3  返回int型別

4.4 若為自定義資料型別 需要過載==

5、binary_search 二分查詢法

5.1  查詢區間迭代器  查詢元素

5.2   返回值為bool型別 表示找到或未找到

5.3   不能在無序序列中使用

6、adjacent_find

6.1 查詢相鄰重複元素

6.2 只需提供查詢區間

6.3 返回值為迭代器  表示相鄰元素的第乙個位置的迭代器

7、測試程式

#include"pch.h"

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

//find 查詢區間迭代器 查詢元素 返回查詢元素位置

void test01()

//查詢有沒有5這個元素

vector::iterator it = find(v1.begin(), v1.end(), 5);

if (it != v1.end())

else }

//查詢自定義資料型別

//過載==

class person

bool operator==(const person&p) };

void test02()

else }

//find_if

class mycompareperson:public binary_function

};void test03()

else }

//adjacent_find 查詢相鄰重複的元素

//返回相鄰元素的第乙個位置的迭代器

void test04()

else }

//binary_search二分查詢法 在無序序列中不可使用

//返回值bool型別

void test05()

//查詢序列中是否有9

bool ret=binary_search(v5.begin(), v5.end(), 9);

if (ret)

else }

//count count_if 按值或條件進行統計

class mycompare6

};void test06()

//按值進行統計

int num = count(v6.begin(), v6.end(), 9);

cout << "9的個數為:" << num << endl;

//按條件進行統計

num=count_if(v6.begin(), v6.end(), mycompare6());

cout << "大於4的個數為:" << num << endl;

}int main()

STL學習3常用演算法3 8常用集合演算法

1 set intersection 求兩個集合的交集 2 set union 求兩個容器的並集 3 set difference 求兩個集合的差集 4 兩集合必須是有序序列 5 返回結果最後乙個元素的迭代器位置 6 標頭檔案 include 7 測試程式 include pch.h include...

STL學習3常用演算法3 6常用拷貝替換演算法

1 copy複製 1.1 將容器中指定範圍的元素拷貝到另一容器中 1.2 目標容器要有容量 2 replace按值替換 2.1 將區間內指定的舊元素替換為新元素 3 replace if 按條件替換 3.1 將區間中符合條件的舊元素替換為新元素 4 swap 交換 4.1 交換兩個容器中的所有元素 ...

STL學習3常用演算法3 7常用算數生成演算法

1 標頭檔案 include 2 accumulate 2.1 計算容器元素累計總和 2.2 第三個引數是起始累加的值 3 fill 3.1 填充演算法 4 測試程式 include pch.h include include include accumulate includeusing name...