2016-11-13 95 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