「std::minmax」の版間の差分
提供: C++入門
(ページの作成:「std::minmax とは、2つの値から小さい値と大きい値を返す関数です。比較するための関数を指定することもできます。 '''読...」) |
|||
行39: | 行39: | ||
int main(int argc, char const* argv[]) | int main(int argc, char const* argv[]) | ||
{ | { | ||
+ | enum {MIN, MAX}; | ||
auto t1 = minmax(1,999); | auto t1 = minmax(1,999); | ||
cout << get<0>(t1) << " " << get<1>(t1) << endl; | cout << get<0>(t1) << " " << get<1>(t1) << endl; | ||
行52: | 行53: | ||
); | ); | ||
cout << get<0>(t3) << " " << get<1>(t3) << endl; | 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; | return 0; | ||
} | } | ||
行66: | 行69: | ||
a b | a b | ||
foo hoge | foo hoge | ||
+ | 1 5 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == |
2014年1月3日 (金) 23:43時点における最新版
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