演算法簡介:
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 個元...