C++ <algorithm> - minmax_element() Function
The C++ algorithm::minmax_element function returns a pair with an iterator pointing to the smallest element in the range [first,last) as pair::first, and largest as pair::second. The elements are compared using operator< (in first version) or comp (in second version).
Syntax
//default version template <class ForwardIterator> pair<ForwardIterator,ForwardIterator> ForwardIterator minmax_element (ForwardIterator first, ForwardIterator last); //custom version template <class ForwardIterator, class Compare> pair<ForwardIterator,ForwardIterator> ForwardIterator minmax_element (ForwardIterator first, ForwardIterator last, Compare comp);
Parameters
first |
Specify initial position of the forward iterator of the sequence to compare. The range used is [first,last). |
last |
Specify final position of the forward iterator of the sequence to compare. The range used is [first,last). |
comp |
A binary predicate that takes two elements in the range as arguments and returns a value convertible to bool. The returned value indicates whether the first argument is considered less than the second. |
Return Value
Returns a pair with an iterator pointing to the smallest element in the range [first,last) as pair::first, and largest as pair::second.
Time Complexity
Up to 1.5 times of Linear i.e, Θ(1.5*n).
Example:
In the example below, the algorithm::minmax_element function is used to find out the smallest and largest elements in the given range.
#include <iostream> #include <algorithm> using namespace std; int main (){ int Arr[] = {10, 5, 15, 45, 20, 55}; pair<int*, int*> MinMax; //finding minimum and maximum elements in the array MinMax = minmax_element(Arr, Arr+6); cout<<"The minimum element in Arr: "<<*MinMax.first; cout<<"\nThe maximum element in Arr: "<<*MinMax.second; return 0; }
The output of the above code will be:
The minimum element in Arr: 5 The maximum element in Arr: 55
Example:
The example below shows how to use comp with algorithm::minmax_element function.
#include <iostream> #include <algorithm> #include <vector> using namespace std; bool less_than (int i, int j) { return (i<j); } int main (){ vector<int> vec= {10, 5, 15, 45, 20, 55}; pair<vector<int>::iterator, vector<int>::iterator> MinMax; //finding minimum and maximum elements in the vector MinMax = minmax_element(vec.begin(), vec.end(), less_than); cout<<"The minimum element in vec: "<<*MinMax.first; cout<<"\nThe maximum element in vec: "<<*MinMax.second; return 0; }
The output of the above code will be:
The minimum element in vec: 5 The maximum element in vec: 55
❮ C++ <algorithm> Library