1.lower_bound与upper_bound
两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找,需要查找的值由第三个参数给出。
对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,也就是返回指向被查值>查找值的最小指针,lower_bound则是返回的是被查序列中第一个大于等于查找值的指针,也就是返回指向被查值>=查找值的最小指针。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {1, 5, 6, 9, 10, 15, 19, 25, 26};
cout << *lower_bound(a, a + 10, 25);
cout << " ";
cout << *upper_bound(a, a + 10, 25);
return 0;
}
输出:
25 26
2.binary_search
返回一个bool类型的值,如果存在于数组中则返回true,否则返回false
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {1, 5, 6, 9, 10, 15, 19, 25, 26};
cout << binary_search(a, a + 10, 5);
cout << " ";
cout << binary_search(a, a + 10, 4) << endl;
return 0;
}
输出:
1 0