不论是lower_bound还是upper_bound,他们两者的实质都是利用二分查找法去解决问题,因而不难理解,两者所作用的对象必须是已经排好序的。
递增数组
lower_bound(begin,end,num)
从数组的begin位置到end-1位置二分查找第一个大于等于num的数字,找到则返回该数字的地址,找不到则返回end。upper_bound(begin,end,num)
从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到则返回该数字的地址,找不到则返回end。
递减数列
lower_bound(begin,end,num,greater<type>())
从数组的begin位置到end-1位置二分查找第一个小于等于num的数字,找到则返回该数字的地址,找不到则返回end。
upper_bound(begin,end,num,greater<type>())
从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到则返回该数字的地址,找不到则返回end。
通过返回的地址减去起始地址begin,得到该数字在数组中的下标。