パープルハット

※当サイトではGoogleアドセンス広告を利用しています

C++ vectorの最大値・最小値



(1) max_elemnt・min_elementを使った方法

max_elemnt・min_elementとは?

  • vector内の最大値・最小値のイテレータを取得することができる関数です。
  • イテレータとして取得できるので、「*取得したイテレータ」とすることで最大値・最小値の表示が可能となります。
  • 関数の引数は共通で次のようになっています。
第1引数 vectorの先頭イテレータ
第2引数 vectorの末尾イテレータ
  • 詳しい使い方は以下の公式サイトを参考にしてください。

min_element - cpprefjp C++日本語リファレンス
max_element - cpprefjp C++日本語リファレンス

使用例1:最大値・最小値を取得

ソースコード

#include <iostream>
#include <vector>
#include <algorithm>

int main () {
    // 宣言
    std::vector<int> v{3, 4, -1, 7, 5, 8};

    // 最大値・最小値のイテレータを取得
    auto maxIte = std::max_element(v.begin(), v.end());
    auto minIte = std::min_element(v.begin(), v.end());

    // 表示
    std::cout << "max = " << *maxIte << std::endl;
    std::cout << "min = " << *minIte << std::endl;
}

実行結果

max = 8
min = -1



使用例2:範囲指定で最大値を取得

  • 引数のイテレータを調整することで、1~4番目の要素の最大値 or 最小値を求めるといったこともできます。

ソースコード

#include <iostream>
#include <vector>
#include <algorithm>

int main () {
    // 宣言
    std::vector<int> v{3, 4, -1, 7, 5, 8};

    // 1~4番目(4, -1, 7, 5)から最大値を求める
    auto maxIte = std::max_element(v.begin() + 1, v.begin() + 5);

    // 表示
    std::cout << "max = " << *maxIte << std::endl;
}

実行結果

max = 7




(2) std::sortを使った方法

概要

  • sortを使ってvectorを降順 or 昇順に並び替えて、その先頭・末尾の要素を取り出す方法です。
  • 2番目に大きい要素も取り出したいなどの場合はこちらがよいかも?

使用例:最大値・最小値を求める

ソースコード

#include <iostream>
#include <vector>
#include <algorithm>

int main () {
    // 宣言
    std::vector<int> v{3, 4, -1, 7, 5, 8};

    // 昇順ソート
    std::sort(v.begin(), v.end());

    // 最小値(先頭)、最大値(末尾)のイテレータを取得
    auto maxIte = v.begin();
    auto minIte = --v.end();

    // 表示
    std::cout << "max = " << *maxIte << std::endl;
    std::cout << "min = " << *minIte << std::endl;
}

実行結果

max = -1
min = 8