「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

関連項目