lower_bound in C++

Returns an iterator pointing to the first element in the range [first, last] which does not compare less than val.
The elements in the range shall already be sorted or at least partitioned with respect to val.
Template :

Syntax 1:
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
Syntax 2:
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val, Compare comp);
first, last
The range used is [first, last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.

val:
Value of the lower bound to search for in the range.



comp:
Binary function that accepts two arguments (the first of the type pointed by ForwardIterator, and the second, always val), and returns a value convertible to bool. The function shall not modify any of its arguments. This can either be a function pointer or a function object.

Return type :
An iterator to the lower bound of val in the range. If all the element in the range compare less than val, the function returns last.

Examples:

Input : 10 20 30 40 50
Output : lower_bound for element 35 at index 3

Input : 10 20 30 40 50
Output : lower_bound for element 55 is index 5
filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to illustrate
// std :: lower_bound
#include <bits/stdc++.h>
  
// Driver code
int main()
{
    std::vector<int> v{ 10, 20, 30, 40, 50 };
  
    // Print vector
    std::cout << "Vector contains :";
    for (unsigned int i = 0; i < v.size(); i++)
        std::cout << " " << v[i];
    std::cout << "\n";
  
    std::vector<int>::iterator low1, low2;
  
    // std :: lower_bound
    low1 = std::lower_bound(v.begin(), v.end(), 20);
    low2 = std::lower_bound(v.begin(), v.end(), 55);
  
    std::cout << "\nlower_bound for element 20 at position : " << (low1 - v.begin());
    std::cout << "\nlower_bound for element 55 at position : " << (low2 - v.begin());
  
    return 0;
}

chevron_right


Output:

Vector contains : 10 20 30 40 50
lower_bound for element 20 at position 1
lower_bound for element 55 at position 5

This article is contributed by Sachin Bisht. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up