函数模板
<algorithm>

std::max

默认 (1)
template <class T> const T& max (const T& a, const T& b);
自定义 (2)
template <class T, class Compare>  const T& max (const T& a, const T& b, Compare comp);
默认 (1)
template <class T> const T& max (const T& a, const T& b);
自定义 (2)
template <class T, class Compare>  const T& max (const T& a, const T& b, Compare comp);
初始化列表 (3)
template <class T> T max (initializer_list<T> il);template <class T, class Compare>  T max (initializer_list<T> il, Compare comp);
默认 (1)
template <class T> constexpr const T& max (const T& a, const T& b);
自定义 (2)
template <class T, class Compare>  constexpr const T& max (const T& a, const T& b, Compare comp);
初始化列表 (3)
template <class T> constexpr T max (initializer_list<T> il);template <class T, class Compare>  constexpr T max (initializer_list<T> il, Compare comp);
返回最大的
返回 ab 中较大的一个。如果两者相等,则返回 a

适用于初始化列表 (3) 的版本返回列表中所有元素中最大的。如果有多个最大值,则返回第一个。

该函数使用operator<(如果提供了 comp,则使用 comp)来比较这些值。

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

参数

a, b
要比较的值。
comp
二元函数,接受两个 T 类型的参数,并返回一个可转换为 bool 的值。返回的值表示第一个参数中的元素是否被认为小于第二个参数。
该函数不得修改其任何参数。
这可以是函数指针或函数对象。
il
il
这些对象是从初始化列表声明符自动构造的。

T 应支持与 operator< 的比较。
T 必须是可复制构造的。
对于(3)T 应为拷贝构造

返回值

作为参数传递的值中较大的一个。

示例

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

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

输出
max(1,2)==2
max(2,1)==2
max('a','z')==z
max(3.14,2.73)==3.14


复杂度

与元素数量减一相比是线性的(对于(1)(2) 是常数)。

异常

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

另见