2016-11-13 92 views
0

我一个小白到C++,我对面这个代码LOWER_BOUND(v.begin(),v.end()中,x)

 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不是存在于载体中时,它返回来一个大于矢量大小的值。这是正当的搜索是否low >= n,但我无法弄清楚在这种情况下,这种情况v[low] > x satisy应该是low是一个索引,其中x是存在的,所以如何有一个值大于x?

+0

这个问题必须被要求各地一千遍就在这样的! – gsamaras

+1

从['std :: lower_bound'](http://en.cppreference.com/w/cpp/algorithm/lower_bound)的文档:*“返回一个迭代器,指向范围[first,last )即**不小于**(即大于或等于)值。“* – StoryTeller

回答

2

lower_bound返回

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

在这里看到更多的细节:lower_bound - cppreference