Standard C++ Library
Copyright 1998, Rogue Wave Software, Inc.
NAME
min_element
- Finds the minimum value in a range.
SYNOPSIS
#include <algorithm>
template <class ForwardIterator>
ForwardIterator
min_element(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
InputIterator
min_element(ForwardIterator first, ForwardIterator last,
Compare comp);
DESCRIPTION
The min_element algorithm returns an iterator that denotes
the minimum element in a sequence. If the sequence contains
more than one copy of the minimum element, the iterator
points to the first occurrence of the element. In the second
version of the function, the optional argument comp defines
a comparison function that can be used in place of the
default operator<.
Algorithm min_element returns the first iterator i in the
range [first, last) such that for any iterator j in the same
range, the following corresponding conditions hold:
!(*j < *i)
or
comp(*j, *i) == false.
COMPLEXITY
min_element performs exactly max((last - first) - 1, 0)
applications of the corresponding comparisons.
EXAMPLE
//
// max_elem.cpp
//
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{
typedef vector<int>::iterator iterator;
int d1[5] = {1,3,5,32,64};
// set up vector
vector<int> v1(d1,d1 + 5);
// find the largest element in the vector
iterator it1 = max_element(v1.begin(), v1.end());
// it1 = v1.begin() + 4
// find the largest element in the range from
// the beginning of the vector to the 2nd to last
iterator it2 = max_element(v1.begin(), v1.end()-1,
less<int>());
// it2 = v1.begin() + 3
// find the smallest element
iterator it3 = min_element(v1.begin(), v1.end());
// it3 = v1.begin()
// find the smallest value in the range from
// the beginning of the vector plus 1 to the end
iterator it4 = min_element(v1.begin()+1, v1.end(),
less<int>());
// it4 = v1.begin() + 1
cout << *it1 << " " << *it2 << " "
<< *it3 << " " << *it4 << endl;
return 0;
}
Program Output
64 32 1 3
WARNINGS
If your compiler does not support default template parame-
ters, then you always need to supply the Allocator template
argument. For instance, you have to write:
vector<int,allocator<int> >
instead of:
vector<int>
If your compiler does not support namespaces, then you do
not need the using declaration for std.
SEE ALSO
max, max_element, min