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先生で、そのことに言及している記事があったが、めんどくさくて読んでない✕
今のところパフォーマンスはどうでもいいので、めんどくさくなってしょうがないよ、自分。
セルフコンパッションが高まってきたな、よし。