# Man Page min_element.3

```
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

```