c++ 配列やコンテナの範囲内の最大値・最小値を取得する方法

<algorithm>ヘッダーにstdのmin_elementとmax_element関数がありこれらを使うと、範囲内の最小値・最大値を取得することができます。

配列の範囲内の最大値・最小値を取得する

配列において、最大・最小値を取得する例を書きます。

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int a[10] = {0,1,2,3,4,5,6,7,8,9};
    // 0 ~ 9までの最大値を出力 9が出力
    cout << *max_element(a,a + 10);
    // 2 ~ 10までの最小値を出力 2が出力
    cout << *min_element(a + 2,a + 10);
}

コンテナにおいて、範囲内の最大値・最小値を取得する

例としてvectorを使用します。

vector<int>vec = {0,1,2,3,4,5,6,7,8,9};
// 0 ~ 7までの最大値を出力 7が出力
cout << *max_element(vec.begin() + 5,vec.end() - 2);
// 3 ~ 0までの最小値を出力 3が出力
cout << *min_element(vec.begin() + 3,vec.end());

範囲内の最小値・最大値を同時に取得する

stdのminmax_element関数を使えば、最大値と最小値を同時に取得することができます。

minmax_elementの返却値はpairになっており、firstに最小値がsecondに最大値が入ります。

minmax_elementは<algorithm>に定義されています。

int main(){
    vector<int>vec = {0,1,2,3,4,5,6,7,8,9};
    // minmaxはpairで返却される
    pair<vector<int>::iterator, vector<int>::iterator> minmax;
    minmax = minmax_element(vec.begin(), vec.end());
    // 出力:0 9
    cout << *minmax.first << " " << *minmax.second;
}

 

カテゴリー: c++タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です