max, min, max_element,及び,min_element の使用方法です.
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
bool less_a(int a, int b)
{
return (bool)((a > b) ? 1 : 0);
};
class less_b : public binary_function<int, int, bool>
{
public:
result_type operator() (first_argument_type a, second_argument_type b)
{
return (result_type)((a > b) ? 1 : 0);
}
};
int main()
{
int k1, k2;
vector<int> v1;
vector<int>::iterator it1, it2;
// 5 と 3 の比較(比較が逆になっていることに注意)
printf("5 と 3 の比較(比較が逆になっていることに注意)\n");
k1 = max(5, 3, less_a);
k2 = min(5, 3, less_a);
// 以下の方法でも可能
// k1 = max(5, 3, less_b());
// k2 = min(5, 3, less_b());
printf(" 最大 = %d, 最小 = %d\n", k1, k2);
// 初期設定
printf("**初期状態 v1**\n");
for (int i1 = 0; i1 < 5; i1++)
v1.push_back(i1+1);
for (it1 = v1.begin(); it1 != v1.end(); it1++)
printf(" %d", *it1);
printf("\n");
// v1 の最大値と最小値(比較が逆になっていることに注意)
printf("v1 の最大値と最小値(比較が逆になっていることに注意)\n");
it1 = max_element(v1.begin(), v1.end(), less_a);
it2 = min_element(v1.begin(), v1.end(), less_a);
printf(" 最大 = %d, 最小 = %d\n", *it1, *it2);
return 0;
}
(出力)
5 と 3 の比較(比較が逆になっていることに注意)
最大 = 3, 最小 = 5
**初期状態 v1**
1 2 3 4 5
v1 の最大値と最小値(比較が逆になっていることに注意)
最大 = 1, 最小 = 5