「std::max」の版間の差分
提供: C++入門
(→概要) |
|||
行43: | 行43: | ||
{ | { | ||
cout << max(1,999) << endl; | cout << max(1,999) << endl; | ||
+ | cout << max({1,2,3}) << endl; | ||
cout << max('a','b') << endl; | cout << max('a','b') << endl; | ||
cout << max( | cout << max( | ||
行63: | 行64: | ||
% ./max1 | % ./max1 | ||
999 | 999 | ||
+ | 3 | ||
b | b | ||
hoge | hoge |
2014年1月3日 (金) 23:41時点における最新版
std::max とは、2つの値から大きい値を返す関数です。比較するための関数を指定することもできます。
読み方
- std::max
- えすてぃーでぃー まっくす
概要
std::maxの逆をする関数は、std::minです。
C++11から複数の引数を受け付けられるようになりました。
cout << max({1,2,3}) << endl;
ヘッダファイル
#include <algorithm>
定義
template< class T > const T& max( const T& a, const T& b ); template< class T, class Compare > const T& max( const T& a, const T& b, Compare comp ); // C++11 template< class T > T max( std::initializer_list<T> ilist ); // C++11 template< class T, class Compare > T max( std::initializer_list<T> ilist, Compare comp );
max1.cpp の例
ソースコード max1.cpp
3つものmaxでは、ラムダ式を使用しているため、C++11対応のコンパイラが必要です。
#include <algorithm> #include <iostream> #include <string> using namespace std; int main(int argc, char const* argv[]) { cout << max(1,999) << endl; cout << max({1,2,3}) << endl; cout << max('a','b') << endl; cout << max( { "foo", "bar", "hoge" }, [](const string& s1, const string& s2) { return s1.size() < s2.size(); } ) << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 max1.cpp -o max1
実行例
% ./max1 999 3 b hoge
関連項目
- std::max
- std::min
- std::minmax (C++11)