这个 下界() C++中的方法用于返回指向范围[1,最后]中第一个元素的迭代器,该值的值不小于Val.这意味着函数返回下一个最小数量的索引,该值大于或等于该数字。如果有多个值等于VAR,则LoeLyBangle()返回第一个这样的值的索引。 该范围内的元素应已根据val进行排序或至少分区。 模板:
语法1: ForwardIterator下界(ForwardIterator first,ForwardIterator last,const T&val); 语法2: ForwardIterator下限(ForwardIterator first、ForwardIterator last、const T&val、comp comp比较);
参数: 上述方法接受以下参数。
- 首先,最后: 使用的范围是[first,last],它包含first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
- 瓦尔: 要在范围中搜索的下限的值。
- 公司: 一个二进制函数,它接受两个参数(第一个是ForwardIterator指出的类型,第二个总是val),并返回一个可转换为bool的值。函数不应修改其任何参数。它可以是函数指针或函数对象。
返回值: 范围内val下限的迭代器。如果范围内的所有元素的比较小于val,则函数返回最后一个。如果范围中的所有元素都大于val,则函数将返回指向第一个元素的指针。 例如:
Input: 10 20 30 40 50Output: lower_bound for element 30 at index 2Input: 10 20 30 40 50Output: lower_bound for element 35 at index 3Input: 10 20 30 40 50Output: lower_bound for element 55 at index 5Input: 10 20 30 30 30 40 50Output: lower_bound for element 30 at index 2
CPP
// CPP program to illustrate // std :: lower_bound #include <bits/stdc++.h> // Driver code int main() { // Input vector std::vector< int > v{ 10, 20, 30, 30, 30, 40, 50 }; // Print vector std::cout << "Vector contains :" ; for (unsigned int i = 0; i < v.size(); i++) std::cout << " " << v[i]; std::cout << "" ; std::vector< int >::iterator low1, low2, low3; // std :: lower_bound low1 = std::lower_bound(v.begin(), v.end(), 30); low2 = std::lower_bound(v.begin(), v.end(), 35); low3 = std::lower_bound(v.begin(), v.end(), 55); // Printing the lower bounds std::cout << "lower_bound for element 30 at position : " << (low1 - v.begin()); std::cout << "lower_bound for element 35 at position : " << (low2 - v.begin()); std::cout << "lower_bound for element 55 at position : " << (low3 - v.begin()); return 0; } |
Vector contains : 10 20 30 30 30 40 50lower_bound for element 30 at position : 2lower_bound for element 35 at position : 5lower_bound for element 55 at position : 7
时间复杂性: 执行的比较次数是对数的。因此,上述方法的时间复杂度是 O(logN) ,其中N=大小。(最后——第一)
本文由 萨钦·比什特 , . 如果你喜欢Geeksforgek,并且想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。