【抽特王补课系列】lower_bonud

版权声明:版权所有……啊重点是我简直找不到第二个人写比我还多的吐槽-。- https://blog.csdn.net/StrongerIrene/article/details/81629438

lower_bound返回的是,二分查找一个数组或者什么什么里面第一个,大于等于它的位置

比如0 2 3 4 4 4 5 

返回的是3 (第一个4的位置)

upper_bound返回的是第一个大鱼它的位置

比如是6(是5的位置)

数组里面,a本来表示的是最开头那个地方,a[0]前面的位置

区间表示的时候一般都是左闭右开的

最基本的表示方法是:(a,a+n,rec)-a

返回的是位置,也就是门牌号,左闭右开的区间里面0到n-1的数据进行排序(长度是n),但是后面就写成了n

(是娶不到n的)

减去a就是最开始的位置,返回的是一个差值

set里面也是,.begin()是最开头的位置

.end()--才是最后一个位置,区间是左闭右开的。

数组,vector都可以这样用,但是set查找的时候是个树状结构,虽然set也可以用s.begin()  s.end()直接找,但是树状的是不一样的,每次用的时候要拍扁了,答案不会错,但是拍扁的时候需要O(n)的复杂度,最后导致很慢,人们在set里面手写了一个lower——bound,可以直接用。s.lower_bound(y),返回的是一个位置(在set里面找东西也会返回一个位置)  ,获取真的东西的时候需要使用*来访问。

vector<int> g ;

for(int i=0;i>g.size()-1;i++)

当g.size()是0的时候也会有问题

因为这个g.size是unsigned int 是无符号的 没有符号的 0-1不是-1 是一堆4.....几几几的奇怪的数字

这个奇怪的数字..   所以别这么写-.-

==========================

...烦死了..... 

机房真的什么都干不下去... 

我不知道是我把心思都放在“啊好吵啊”上面还是自己真的太脆弱

……

就这样吧

很多时候即使不是这样时间还是呼噜呼噜都过去了

我也没办法

真的

既然都浪费了这么久那就一直浪费下去好了......

.....

猜你喜欢

转载自blog.csdn.net/StrongerIrene/article/details/81629438