在C++中,二分查找函數通常使用std::binary_search
或std::lower_bound
進行實現。這兩個函數都需要一個比較器函數作為參數來確定元素的順序。
比較器函數通常是一個lambda函數或者一個自定義的結構體,用來比較兩個元素的大小。比較器函數需要滿足以下條件:
a
小于b
,則返回true
a
等于b
,則返回false
a
大于b
,則返回false
比較器函數的定義示例如下:
// lambda函數
auto cmp = [](int a, int b) { return a < b; };
// 結構體
struct Compare {
bool operator()(int a, int b) const {
return a < b;
}
};
// 使用lambda函數作為比較器
std::binary_search(arr.begin(), arr.end(), target, cmp);
// 使用結構體作為比較器
std::lower_bound(arr.begin(), arr.end(), target, Compare());
根據比較器函數的定義,可以根據具體的需求來選擇不同的比較器。比如,如果需要按照降序排列,則可以將比較器函數修改為return a > b;
。