## max_element

    Algorithm

- Summary
- Data Type and Member Function Indexes
- Synopsis
- Description
- Complexity
- Example
- Warnings
- See Also

### Summary

Finds the maximum value in a range.

### Data Type and Member Function Indexes
(exclusive of constructors and destructors)

None

### Synopsis

    #include <algorithm>
    template <class ForwardIterator>
     ForwardIterator
     max_element(ForwardIterator first, ForwardIterator last);

    template <class ForwardIterator, class Compare>
     ForwardIterator
     max_element(ForwardIterator first, ForwardIterator last,
                 Compare comp);

### Description

The max_element algorithm returns an iterator that denotes the maximum element in a sequence. If the sequence contains more than one copy of the element, the iterator points to its first occurrence. The optional argument `comp` defines a comparison function that can be used in place of the default `operator<`.

Algorithm max_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:

`!(*i < *j)`

or

`comp(*i, *j) == false.`

### Complexity

Exactly `max((last - first) - 1, 0)` applications of the corresponding comparisons are done for max_element.

### 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 parameters, 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, min, min_element

Copyright (c) 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998