c 常用查詢演算法

2022-10-11 03:24:15 字數 2294 閱讀 1721

演算法簡介:

find//查詢元素

find_if//按條件查詢元素

adjacent_find//查詢相鄰重複元素

binary_search//二分查詢法

count//統計元素個數

count_if//按條件統計元素個數

find

功能描述:

查詢指定元素,找到返回指定元素的迭代器,找不到返回結束迭代器end()

函式原型:

find(iterator beg, iterator end, value);

// 按值查詢元素,找到返回指定位置迭代器,找不到返回結束迭代器位置

// beg 開始迭代器

// end 結束迭代器

// value 查詢的元素

classperson

//自定義資料型別要過載==,因為底層使用的是==來判斷find函式,所以需要過載這個

booloperator==(constperson&p)

returnfalse;

}public:

stringm_name;

intm_age;

};vector::iteratorit= find(v.begin(), v.end(), p2);

find_if

功能描述:

按條件查詢元素

函式原型:

find_if(iterator beg, iterator end, _pred);

// 按值查詢元素,找到返回指定位置迭代器,找不到返回結束迭代器位置

// beg 開始迭代器

// end 結束迭代器

// _pred 函式或者謂詞(返回bool型別的仿函式)

classperson

public:

stringm_name;

intm_age;

};classgreater20

};boolgreater10(person&p)

vector::iteratorit= find_if(v.begin(), v.end(), greater20());

vector::iteratorit= find_if(v.begin(), v.end(), greater10);

adjacent_find

功能描述:

查詢相鄰重複元素

函式原型:

adjacent_find(iterator beg, iterator end);

// 查詢相鄰重複元素,返回相鄰元素的第乙個位置的迭代器

// beg 開始迭代器

// end 結束迭代器

如果有多個相鄰,返回第乙個相鄰

classperson

//跟find一樣,自定義資料型別要過載==,因為底層使用的是==來判斷find函式,所以需要過載這個

booloperator==(const person&p)

else

}public:

stringm_name;

intm_age;

};vector::iteratorit= adjacent_find

(v.begin(), v.end());

binary_search

功能描述:

查詢指定元素是否存在,二分法進行查詢

函式原型:

bool binary_search(iterator beg, iterator end, value);

// 查詢指定的元素,查到返回true 否則false

// 注意: 在無序序列中不可用

// beg 開始迭代器

// end 結束迭代器

// value 查詢的元素

自定義資料中同樣需要過載==

count

功能描述:

統計元素個數

函式原型:

count(iterator beg, iterator end, value);

// 統計元素出現次數,返回乙個int

// beg 開始迭代器

// end 結束迭代器

// value 統計的元素

自定義資料中同樣需要過載==

count_if

功能描述:

按條件統計元素個數

函式原型:

count_if(iterator beg, iterator end, _pred);

// 按條件統計元素出現次數

// beg 開始迭代器

// end 結束迭代器

// _pred 謂詞

和find_if差不多

C 常用查詢演算法

find 查詢元素 find if 按條件查詢元素 adjacent find 查詢相鄰重複元素 binary search 二分查詢演算法 count 統計元素個數 count if 按條件統計元素個數 1 find 查詢指定元素,返回找到的指定元素的迭代器,找不到則返回結束迭代器 函式原型 fi...

C 常用的查詢演算法

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

C 常用查詢演算法總結(二)

查詢是在大量的資訊中尋找乙個特定的資訊元素,在計算機應用中,查詢是常用的基本運算,例如編譯程式中符號表的查詢,欄位的查詢,等等。1 插值查詢 在介紹插值查詢之前,首先考慮乙個新問題,為什麼上述演算法一定要是折半,而不是折四分之一或者折更多呢?同樣的,比如要在取值範圍1 10000 之間 100 個元...