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),这是常数)。

异常

如果任何比较操作抛出异常,则该函数抛出异常。
请注意,无效参数会导致未定义行为

另见