关于set的lower_bound的一些玄学问题。

P2161 [SHOI2009] 会场预约

<8,1>小于<8,8>,lowerbound返回比匹配的那个大的(等于也行)
by Raymondzll @ 2021-08-12 11:36:47


因为 `pair<int, int>{8, 1} < pair<int, int>{8, 8}`,所以 lower_bound 显然查不到
by rui_er @ 2021-08-12 11:37:22


所以,是因为查找到与first相同的8,再去找second,发现没有一个数是能够大于等于second的,所以lower_bound就查找不到了,是吗?
by h1910819075 @ 2021-08-12 11:43:57


@[Raymondzll](/user/225192) 照这样,如果set里有 ``` <1,1> <2,2> <3,3> ``` 三组数据,使用lower_bound查找<1,0> ,应该会出现 ``` <1,1> <2,2> <3,3> ``` 这样三组的数据吧?<1,0> 比三组都要小,可是实际上只会出现<1,1> 和另一越界组,然后就程序就强行退出了,这是为什么呢?
by h1910819075 @ 2021-08-12 19:13:07


我知道lower_bound只会出现一组,如果使用set的遍历,在使用lower_bound找到的下标后面继续的遍历寻找符合条件的序列,这样是没有问题的吧?
by h1910819075 @ 2021-08-12 19:15:49


@[h1910819075](/user/286752) 这是C++的官方参考书
by Raymondzll @ 2021-08-12 19:46:39


[set—lowerbound使用说明](http://cplusplus.com/reference/set/set/lower_bound/)
by Raymondzll @ 2021-08-12 19:47:47


@[Raymondzll](/user/225192) 好的,谢谢
by h1910819075 @ 2021-08-12 19:58:07


|