std::minmax
提供: C++入門
スポンサーリンク
std::minmax とは、2つの値から小さい値と大きい値を返す関数です。比較するための関数を指定することもできます。
読み方
- std::minmax
- えすてぃーでぃー みん まっくす
概要
最大、最小の両方の値ではなく、どちらか片方の値が必要な場合は、以下の関数を使用します。
ヘッダファイル
#include <algorithm>
定義
template< class T > std::pair<const T&,const T&> minmax( const T& a, const T& b ); template< class T, class Compare > std::pair<const T&,const T&> minmax( const T& a, const T& b, Compare comp ); // C++11 template< class T > std::pair<T,T> minmax( std::initializer_list<T> ilist); // C++11 template< class T, class Compare > std::pair<T,T> minmax( std::initializer_list<T> ilist, Compare comp );
minmax1.cpp の例
3つ目の比較では、ラムダ式を使用しているため、C++11に対応したコンパイラが必要です。 autoで扱っていますが、std::pairが返ってきます。
ソースコード minmax1.cpp
#include <algorithm> #include <iostream> #include <string> #include <tuple> using namespace std; int main(int argc, char const* argv[]) { enum {MIN, MAX}; auto t1 = minmax(1,999); cout << get<0>(t1) << " " << get<1>(t1) << endl; auto t2 = minmax('a','b'); cout << get<0>(t2) << " " << get<1>(t2) << endl; auto t3 = minmax( { "foo", "bar", "hoge" }, [](const string& s1, const string& s2) { return s1.size() < s2.size(); } ); cout << get<0>(t3) << " " << get<1>(t3) << endl; auto t4 = minmax({1,2,3,4,5}); cout << get<MIN>(t4) << " " << get<MAX>(t4) << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 minmax1.cpp -o minmax1
実行例
% ./minmax1 1 999 a b foo hoge 1 5
関連項目
- std::max
- std::min
- std::minmax (C++11)
- auto
- std::tuple
ツイート
スポンサーリンク