# 11.2. Finding the Greatest or Least Value in a Container

## Problem

You want to find the maximum or minimum value in a container.

## Solution

Example 11-2 shows how to find the minimum and maximum elements in a container by using the functions `max_element` and `min_element` found in the `<algorithm>` header. These functions return iterators that point to the first occurence of an element with the largest or smallest value, respectively.

Example 11-2. Finding the minimum or maximum element from a container

```#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int getMaxInt(vector<int>& v) {
return *max_element(v.begin(), v.end());
}

int getMinInt(vector<int>& v) {
return *min_element(v.begin(), v.end());
}

int main() {
vector<int> v;
for (int i=10; i < 20; ++i) v.push_back(i);
cout << "min integer = " << getMinInt(v) << endl;
cout << "max integer = " << getMaxInt(v) << endl;
}```

The program in Example 11-2 produces the following output:

```min integer = 10
max integer = 19```

## Discussion

You may have noticed the dereferencing of the return value from the calls to `min_element` and `max_element`. This is because these functions return iterators and not actual values, so the results have to be dereferenced. You may find it a minor inconvenience to have to dereference the return type, but it avoids unnecssarily copying the return value. This can be especially significant when the return value has expensive copy semantics (e.g., large strings).

The generic algorithms provided by the ...

Get C++ Cookbook now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.