lower_bound()的返回值是第一个大于等于 target 的值的地址,用这个地址减去first,得到的就是第一个大于等于target的值的下标。
在数组中:
int pos=lower_bound(a,a+n,target)-a;\\n为数组长度
在vector容器中:
int pos=lower_bound(a.begin(),a.end(),target)-a.begin();
在从小到大的排好序的数组中,在数组的 [begin, end) 区间中二分查找第一个大于value的数,找到返回该数字的地址,没找到则返回end。用这个地址减去first,得到的就是第一个大于等于target的值的下标。
在数组中:
int pos=upper_bound(a,a+n,target)-a;\\n为数组长度
在vector容器中:
int pos=upper_bound(a.begin(),a.end(),target)-a.begin();