C++实用函数
lower_bound
- 用法:lower_bound(起始位置,结束位置,数值val)
- 作用:返回区间中第一个大于或等于val的元素地址
- 注意点:
1. 区间是左闭右开
2. 前提是有序数组(或者这一区间有序)
3. 如果所有元素都小于val,则返回结束地址(越界)
//找到数组中第一个大于或等于10的元素下标
int m = lower_bound(s.begin(), s.end(), 10) - s.begin();
upper_bound
- 用法:upper_bound(起始位置,结束位置,数值val)
- 作用:返回区间第一个大于val的元素地址
- 注意点:同上
//从下标为5开始,从数组中找到第一个大于5的元素下标
int m = upper_bound(s.begin()+5, s.end(), 5) - s.begin();
binary_search
- 用法:binary_bound(起始位置,结束位置,数值val)
- 作用:返回区间中是否有等于数值val
- 注意点:同上
//二分查找返回布尔类型
bool flag = binary_search(s.begin(), s.end(), 4);