含义
lower_bound( ) 和 upper_bound( ) 都是用二分查找在一个有序的数列中进行查询的
① 在从小到大的有序数列中
lower_bound(begin, end, num);
是从数组 begin 位置到 end - 1位置二分查找第一个大于等于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。
upper_bound(begin, end, num);
是从数组 begin 位置到 end - 1位置二分查找第一个大于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。
② 在从大到小的有序数组中
我们需要进行重载
lower_bound(begin, end, greater<type>());
是从数组 begin 位置到 end - 1位置二分查找第一个小于等于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。
upper_bound(begin, end, greater<type>());
是从数组 begin 位置到 end - 1位置二分查找第一个小于num的数字,返回这个数字的地址,不存在则返回end。返回值减去begin即能得到数字在数组中的下标。
应用
lower_bound( ) 和 upper_bound( ) 能在数组、vector等应用。
参考来源
https://blog.csdn.net/qq_40160605/article/details/80150252