upper_bound与lower_bound
作者:
假如有点困
,
2023-11-08 15:40:07
,
所有人可见
,
阅读 120
cpp reference
lower_bound
upper_bound
若数组升序排列
lower_bound(begin, end, a) 返回数组[begin, end)之间第一个大于或等于a的地址,找不到返回end (可以等于所以low)
upper_bound(begin, end, a) 返回数组[begin, end)之间第一个大于a的地址,找不到返回end (一定大于所以up)
若数组降序排列,可写上比较函数greater<type>()
lower_bound(begin, end, a, greater<int>()) 返回数组[begin, end)之间第一个小于或等于a的地址,找不到返回end
upper_bound(begin, end, a, greater<int>()) 返回数组[begin, end)之间第一个小于a的地址,找不到返回end
非数值数组的情况可选择手写比较函数,如
bool cmp(node a, node b)
{
if(a.value1 != b.value1) return a.value1 < b.value1;
else return a.value2 < b.value2;
}