function template
<algorithm>

std::min

預設 (1)
template <class T> const T& min (const T& a, const T& b);
自定義 (2)
template <class T, class Compare>  const T& min (const T& a, const T& b, Compare comp);
預設 (1)
template <class T> const T& min (const T& a, const T& b);
自定義 (2)
template <class T, class Compare>  const T& min (const T& a, const T& b, Compare comp);
initializer list (3)
template <class T> T min (initializer_list<T> il);template <class T, class Compare>  T min (initializer_list<T> il, Compare comp);
預設 (1)
template <class T> constexpr const T& min (const T& a, const T& b);
自定義 (2)
template <class T, class Compare>  constexpr const T& min (const T& a, const T& b, Compare comp);
initializer list (3)
template <class T> constexpr T min (initializer_list<T> il);template <class T, class Compare>  constexpr T min (initializer_list<T> il, Compare comp);
返回最小值
返回引數 ab 中較小的一個。如果兩者相等,則返回 a

initializer list (3) 版本返回列表中所有元素中最小的一個。如果列表中有多個最小元素,則返回第一個。

該函式使用operator<(如果提供了 comp,則使用 comp)來比較這些值。

此函式模板(C++98)的行為等同於
1
2
3
template <class T> const T& min (const T& a, const T& b) {
  return !(b<a)?a:b;     // or: return !comp(b,a)?a:b; for version (2)
}

引數

a, b
要比較的值。
comp
二元函式,接受兩個 T 型別的引數,並返回一個可轉換為 bool 的值。返回的值表示第一個引數中的元素是否被認為小於第二個引數。
該函式不得修改其任何引數。
這可以是一個函式指標,也可以是一個函式物件。
il
il
這些物件是從初始化列表宣告符自動構造的。

T 應支援與 operator< 的比較。
T 必須是copy constructible
對於(3)T 應為複製構造

返回值

所傳引數中較小的值。

示例

1
2
3
4
5
6
7
8
9
10
11
// min example
#include <iostream>     // std::cout
#include <algorithm>    // std::min

int main () {
  std::cout << "min(1,2)==" << std::min(1,2) << '\n';
  std::cout << "min(2,1)==" << std::min(2,1) << '\n';
  std::cout << "min('a','z')==" << std::min('a','z') << '\n';
  std::cout << "min(3.14,2.72)==" << std::min(3.14,2.72) << '\n';
  return 0;
}

輸出
min(1,2)==1
min(2,1)==1
min('a','z')==a
min(3.14,2.72)==2.72


複雜度

線性於所比較的元素數量減一(對於(1)(2),這是常數)。

異常

如果任何比較操作丟擲異常,則該函式丟擲異常。
請注意,無效引數會導致未定義行為

另見