- lower_bound(first,last,value)查找一个非递减序列中的第一个大于或等于value的元素的位置
- upper_bound(first,last,value)查找一个非递减序列中的第一个大于value的元素的位置
- binary_search(first,last,value)返回一个bool值,判断value是否在序列中。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10] = { 2,3,5,7,4,6,8,0,9,1 };
sort(a, a + 10);
int p = lower_bound(a, a + 10,2) - a;
int q = upper_bound(a, a + 10, 2) - a;
cout << p<<" " << q;
return 0;
}
注意:
- 头文件algorithm
- 上面last是序列结尾元素的下一个位置
- 上面三个函数用的是二分查找
- 序列必须为非递减有序序列
- 假如lower_bound()、upper_bound()没有查找到相关元素,则返回last的位置,注意这已经溢出了。