max

[機能]

  2 つの値の内,大きい方の値を返します.2 引数の比較関数を指定することも可能です(下の表現).

[形式]
	#include <algorithm>
	#include <functional>

	template <class T> const T& max(const T& a, const T& b);
	template <class T, class Compare> const T& max(const T& a, const T& b, Compare comp);
		

[使用例]

  1. 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
    			
[参照]

minmax_elementmin_element

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引