今日勉強したことを
つらつらと
logo

C++のstd::minで複数の値から一番小さいものを取るには

2020/05/24 14:05
C++のstd::minで複数の値から一番小さいものを取るには、リスト引数を取ればいい。

C++で 3 つ以上の値から min を取るとき、複数渡すとエラーになって困った・・

#include <bits/stdc++.h>

int main() {
    int a = 4, b = 2, c = 10, d = 4, e = 2;
    cout << std::min(a,b,c,d,e); // エラー!
}

list が渡せる

素直にリファレンス見ればよかった。min には list を渡せる。

// (3)
template <class T>
constexpr T min(initializer_list<T> t);

つまり初期化子リストを渡せばよい。()のあとにさらに{}で囲むとエラーじゃなくなる。

#include <bits/stdc++.h>

int main() {
    int a = 4, b = 2, c = 10, d = 4, e = 2;
    cout << std::min({a,b,c,d,e}); // 2!
}

© 2021 simodake