名前を見ただけですぐにその働きがわかる関数です。
template指定した範囲の要素の最小値のアドレスを返します。ForwardIterator min_element( ForwardIterator _First, ForwardIterator _Last );
templateこれは、最大値ですね。inline InputIterator max_element( InputIterator First, InputIterator Last, )
では、簡単なサンプルを見てみましょう。
// minmax.cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v;
int n, i, max, min;
while (1) {
cout << "整数値入力(0で終了)--";
cin >> n;
if (n == 0)
break;
v.push_back(n);
}
for (i = 0; i < (int)v.size(); i++)
cout << v[i] << endl;
min = *min_element(v.begin(), v.end());
max = *max_element(v.begin(), v.end());
cout << "入力された最小値は" << min << "です" << endl;
cout << "入力された最大値は" << max << "です" << endl;
return 0;
}
v.end()は、最後の要素の次の要素を指す反復子を返している点に注意してください。普通の配列でもこの関数は使用可能ですが、特に2番目の引数に気を付ける必要があります。
さて、min_elementやmax_element関数には、3番目の引数として 比較関数のアドレスを指定することもできます。これで特殊な比較もできるわけです。
Update Jul/25/2005 By Y.Kumei