感谢CSDN博主「brandong」的原创文章https://blog.csdn.net/qq_40160605/article/details/80150252
对我的这篇文章有十分重要的帮助
————————优美的分割线————————
lower_bound( )和upper_bound( )都是利用封装的二分查找的方法在一个排好序的数组中进行查找的。
lower_bound (begin,end,num)是将一个排好序的[begin,end)区间中通过二分查找第一个大于等于num的数字,找到并返回该数字的地址,不存在则返回end。我们还可以通过返回的地址减去起始地址begin,得到数字在数组中的下标。lower_bound函数的时间复杂度为O(log n)。
upper_bound (begin,end,num)是将一个排好序的[begin,end)区间中通过二分查找第一个大于num的数字,找到并返回该数字的地址,不存在则返回end。我们还可以通过返回的地址减去起始地址begin,得到数字在数组中的下标。upper_bound函数的时间复杂度为O(log n)。
#include<bits/stdc++.h>
using namespace std;