STL lb,ub

来源:互联网 发布:网络硬盘录像机的用途 编辑:程序博客网 时间:2024/05/01 21:57

lower_bound

lower_bound返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值[1] 。该函数为C++ STL内的函数。

注意点:

运用了二分的方法,效率十分高,复杂度为O(log(n))。但快也是要付出代价的,代价就是查找的数组是一个单调不递减序列(有些类型也自带这个lb,如set,multiset等等)

延伸:

在算法中,往往只用得到一些浅显的运用,复杂的理论往往是累赘和增加理解的负担。
lb(a,a+n,x)就是在一个长度为n数组(或其他什么,单调不递减)中,查找第一个大于等于x的元素的迭代器,转化成下标是lb(a,a+n,x)-a

lb-1是小于x的第一个元素

upper_bound

同理:
up是大于x的第一个元素
up-1是小于等于x的第一个元素

原创粉丝点击