std::min_element() algorithm
- since C++17
- until C++17
template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );
// (2)
template< class ForwardIt, class Compare >
ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );
// (3)
template< class ExecutionPolicy, class ForwardIt >
ForwardIt min_element( ExecutionPolicy&& policy,
ForwardIt first, ForwardIt last );
// (4)
template< class ExecutionPolicy, class ForwardIt, class Compare >
ForwardIt min_element( ExecutionPolicy&& policy,
ForwardIt first, ForwardIt last, Compare comp );
template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );
// (2)
template< class ForwardIt, class Compare >
ForwardIt min_element( ForwardIt first, ForwardIt last, Compare comp );
Finds the smallest element in the range [first; last).
-
(1) Elements are compared using
operator<. -
(2) Elements are compared using the given binary comparison function
comp.
Parameters
first last | The range to find the smallest element in. |
policy | The execution policy to use. See execution policy for details. |
comp | Comparison function object (i.e. an object that satisfies the requirements of Compare). The signature of the comparison function should be equivalent to the following:
|
Type requirements
RandomIt | LegacyRandomAccessIterator |
Return value
Iterator to the greatest element in the range [first; last).
If several elements in the range are equivalent to the greatest element, returns the iterator to the first such element.
Returns last if the range is empty.
Complexity
Given N as std::distance(first, last):
Exactly min(N - 1, 0) comparisons.
Exceptions
The overloads with a template parameter named ExecutionPolicy report errors as follows:
- If execution of a function invoked as part of the algorithm throws an exception and
ExecutionPolicyis one of the standard policies,std::terminateis called. For any otherExecutionPolicy, the behavior is implementation-defined. - If the algorithm fails to allocate memory,
std::bad_allocis thrown.
Possible implementation
min_element(1)
min_element(2)
Examples
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v {3, 1, -4, 1, 5, 9};
std::vector<int>::iterator result = std::min_element(v.begin(), v.end());
std::cout << "min element has value " << *result << " and index ["
<< std::distance(v.begin(), result) << "]\n";
}
min element has value -4 and index [2]
Hover to see the original license.