lower_bound(v.begin(), v.end(), x)

lower_bound(v.begin(), v.end(), x)

本文关键字:end bound begin lower      更新时间:2023-10-16

我是一个c++新手,我刚刚看到这段代码

       x = v[lft]+k;
       low = lower_bound(v.begin(), v.end(), x) - v.begin();
       if(low >= n|| v[low] > x )
        low--;
       center = v[low];

如果x不存在于vector中,则返回一个大于vector大小的值。这证明搜索low >= n是合理的,但是我不知道在什么情况下v[low] > x会满足这个条件?low不应该是一个x存在的索引吗,那么怎么可能有一个大于x的值呢?

lower_bound返回

一个迭代器指向[first, last)范围内不小于(即大于或等于)的第一个元素。

查看此处获取更多详细信息:lower_bound - cppreference