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 the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.