C++ 最大値と最小値を同時に求める中級魔法 "std::minmax_element()"

最大値と最小値を同時に求める関数である

ドラクエでいうと、"std::minmax_element()"ってメラミくらいの威力でしょうか。


さて、こちらはCodewarにて問題を解く過程で使用しました。

メモ:

  • vector限定ではなく、イテレータであればOK。
  • minmaxを求める時の比較関数の指定も可能。
  • 戻り値の覚え方: min, maxの順。関数名"minmax_XXX"の記載順そのままと覚えるがよろし。

詳しくは、Google先生で検索する or ↓公式ドキュメントを参照するがよろし。


Example Code:

#include <algorithm>
#include <iostream>
 
int main() {
    const auto v = { 3, 9, 1, 4, 2, 5, 9 };
    const auto [min, max] = std::minmax_element(begin(v), end(v));
 
    std::cout << "min = " << *min << ", max = " << *max << '\n';
}

Output:

min = 1, max = 9


ホントは、std::min_element()とstd::max_element()を使って解きました、はい。。

他の人がこの関数を使って、スマートに解いていたので紹介しているだけです、はい。。


パフォーマンス(計算量とかメモリ使用量)については、
Google先生で、そのことに言及している記事があったが、めんどくさくて読んでない✕
今のところパフォーマンスはどうでもいいので、めんどくさくなってしょうがないよ、自分。
セルフコンパッションが高まってきたな、よし。