 Open in App
Not now

# std::upper_bound and std::lower_bound for Vector in C++ STL

• Difficulty Level : Easy
• Last Updated : 28 Jul, 2022

### Vector – upper_bound and lower_bound

Iterator lower_bound (Iterator first, Iterator last, const val)
Iterator upper_bound (Iterator first, Iterator last, const val)
lower_bound returns an iterator pointing to the first element in the range [first,last) which has a value not less than ‘val’.

and if the value is not present in the vector then it returns the end iterator.
upper_bound returns an iterator pointing to the first element in the range [first,last) which has a value greater than ‘val’.

## CPP

 `// lower_bound and upper_bound in vector` `#include // for lower_bound, upper_bound and sort``#include ``#include // for vector` `using` `namespace` `std;` `int` `main()``{``    ``int` `gfg[] = { 5, 6, 7, 7, 6, 5, 5, 6 };` `    ``vector<``int``> v(gfg, gfg + 8); ``// 5 6 7 7 6 5 5 6` `    ``sort(v.begin(), v.end()); ``// 5 5 5 6 6 6 7 7` `    ``vector<``int``>::iterator lower, upper;``    ``lower = lower_bound(v.begin(), v.end(), 6);``    ``upper = upper_bound(v.begin(), v.end(), 6);` `    ``cout << ``"lower_bound for 6 at position "``         ``<< (lower - v.begin() + 1) << ``'\n'``;``    ``cout << ``"upper_bound for 6 at position "``         ``<< (upper - v.begin() + 1) << ``'\n'``;` `    ``return` `0;``}`

Output :

```lower_bound for 6 at position 4
upper_bound for 6 at position 7```

Time Complexity: O(n*log(n)) where n is the number of elements in the array.
Auxiliary Space: O(1)

Let us see the difference table with 5 useful differences that are as follows: