max_element

[機能]

  指定した範囲において,最大要素を指す最初のイテレータを返します.2 引数の比較関数を指定することも可能です(下の表現,sort 参照).

[形式]
#include <algorithm>

template <class ForwardIterator>
    ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
template <class ForwardIterator, class Compare>
    ForwardIterator max_element(ForwardIterator first, ForwardIterator last,
                                Compare comp);		

[使用例]

  1. max, min, minmax, max_element, min_element, minmax_element, clamp の使用方法です.
    #include <stdio.h>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
    					// max, min, minmax
    	printf("max, min, minmax\n");
    	int kmax1 = max(5, 3);
    	int kmax2 = max({5, 8, 1, 3});
    	int kmin1 = min(5, 3);
    	int kmin2 = min({5, 8, 1, 3});
    	printf("  最大値 %d %d 最小値 %d %d\n", kmax1, kmax2, kmin1, kmin2);
    	pair<int, int> p1 = minmax(5, 3);
    	pair<int, int> p2 = minmax({5, 8, 1, 3});
    	printf("  最大値,最小値 %d %d 最大値,最小値 %d %d\n",
    	       p1.second, p1.first, p2.second, p2.first);
    					// max_element, min_element, minmax_element
    	printf("max_element, min_element, minmax_element\n");
    	vector<int> v {5, 8, 1, 3};
    	vector<int>::iterator imax = max_element(v.begin(), v.end());
    	vector<int>::iterator imin = min_element(v.begin(), v.end());
    	printf("  最大値 %d 最小値 %d\n", *imax, *imin);
    	pair<vector<int>::iterator, vector<int>::iterator> ip = minmax_element(v.begin(), v.end());
    	printf("  最大値 %d 最小値 %d\n", *(ip.second), *(ip.first));
    					// clamp
    	printf("clamp\n");
    	for (int i1 = 0; i1 < 10; i1++) {
    		int x = clamp(i1, 3, 7);
    		printf("  %d", x);
    	}
    	printf("\n");
    
    	return 0;
    }
    			
    (出力)
    max, min, minmax
      最大値 5 8 最小値 3 1
      最大値,最小値 5 3 最大値,最小値 8 1
    max_element, min_element, minmax_element
      最大値 8 最小値 1
      最大値 8 最小値 1
    clamp
      3  3  3  3  4  5  6  7  7  7			
[参照]

sortmaxminmaxminmin_elementminmax_elementclamp

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