Standard C++ Library Class Reference
ordering. There are two versions of the algorithm. The first uses the less than operator
(operator<) to perform the comparison, and assumes that the sequence has been sorted using
that operator. The second version lets you include a function object of type Compare, and
assumes that Compare is the function used to sort the sequence. The function object must be a
binary predicate.
lower_bound's return value is the iterator for the first element in the container that is greater
than or equal to value, or, when the comparison operator is used, the first element that does not
satisfy the comparison function. Formally, the algorithm returns an iterator i in the range [first,
last) such that for any iterator j in the range [first, i) the following corresponding conditions
hold:
*j < value
or
comp(*j, value) == true
Complexity
lower_bound performs at most log(last - first) + 1 comparisons.
Example
//
// ul_bound.cpp
//
#include <vector>
#include <algorithm>
#include <iostream.h>
int main()
{
typedef vector<int>::iterator iterator;
int d1[11] = {0,1,2,2,3,4,2,2,2,6,7};
// Set up a vector
vector<int> v1(d1,d1 + 11);
// Try lower_bound variants
iterator it1 = lower_bound(v1.begin(),v1.end(),3);
// it1 = v1.begin() + 4
iterator it2 =
lower_bound(v1.begin(),v1.end(),2,less<int>());
// it2 = v1.begin() + 4
// Try upper_bound variants
iterator it3 = upper_bound(v1.begin(),v1.end(),3);
// it3 = vector + 5
iterator it4 =