「std::min」の版間の差分

提供: C++入門
移動: 案内検索
(定義)
(概要)
 
行10: 行10:
 
[[C++11]]から複数の引数を受け付けられるようになりました。
 
[[C++11]]から複数の引数を受け付けられるようになりました。
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
cout << min({1,2,3}) << endl;
+
cout << min(1,2) << endl; // この方式は、2つまで。
 +
cout << min({1,2,3}) << endl; // この方式では、複数が指定できます。
 
</syntaxhighlight>
 
</syntaxhighlight>
  

2014年1月3日 (金) 23:40時点における最新版

std::min とは、2つの値から小さい値を返す関数です。比較するための関数を指定することもできます。

読み方

std::min
えすてぃーでぃー みん

概要

std::maxの逆をする関数は、std::minです。

C++11から複数の引数を受け付けられるようになりました。

cout << min(1,2) << endl; // この方式は、2つまで。
cout << min({1,2,3}) << endl; // この方式では、複数が指定できます。

ヘッダファイル

#include <algorithm>

定義

template< class T > 
const T& min( const T& a, const T& b );
template< class T, class Compare >
const T& min( const T& a, const T& b, Compare comp );
 
// C++11
template< class T >
T min( std::initializer_list<T> ilist );
// C++11
template< class T, class Compare >
T min( std::initializer_list<T> ilist, Compare comp );

min1.cpp の例

ソースコード min1.cpp

3つ目の比較では、ラムダ式を使用しているため、C++11に対応したコンパイラが必要です。

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char const* argv[])
{
        cout << min(1,999) << endl;
        cout << min({1,2,3}) << endl;
        cout << min('a','b') << endl;
        cout << min( { "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  min1.cpp -o min1

実行例

% ./min1
1
1
a
foo

関連項目