C++算法max()函数有以下3种使用方式:
- 它比较在其参数中传递的两个值,并返回它们之间较大的值。如果两者相等,则返回第一个。
- 它还使用用户定义的二元函数比较这两个值,然后在 std::max( 中作为参数传递)。
- 它还用于查找给定列表中的最大元素,如果列表中有多个最大元素,则返回第一个。
对于第一个版本使用运算符 < 比较元素,或者对于第二个版本使用给定的二进制比较函数 comp 比较元素。
用法
default (1) template <class T> const T& max (const T& a, const T& b); //until C++ 11
custom (2) template <class T, class Compare>
const T& max (const T& a, const T& b, Compare comp); //until C++ 11
default (1) template <class T> const T& max (const T& a, const T& b); //until C++ 14
custom (2) template <class T, class Compare>
const T& max (const T& a, const T& b, Compare comp); //until C++ 14
initializer list (3) template <class T> T max (initializer_list<T> il);
template <class T, class Compare>
T max (initializer_list<T> il, Compare comp); //until C++ 14
default (1) template <class T> constexpr const T& max (const T& a, const T& b); //since C++ 14
//since C++ 14
custom (2) template <class T, class Compare>
constexp const T& max(const T& a, const T& b, Compare comp);
// since C++ 14
initializer list (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);
//since C++ 14
参数
a:要比较的第一个值。
b:要比较的第二个值。
comp: 一个用户定义的二元谓词函数,它接受两个参数,如果两个参数是有序的,则返回真,否则返回假。它遵循严格的弱排序来对元素进行排序。
il:一个 initializer_list 与要比较的值。
返回值
它返回 a 和 b 的最大值。如果值相等,则返回 a。
返回 il 中的最大值。如果几个值等于最大值,则返回最左边的这样的值。
复杂度
复杂性是线性的,比所比较的元素数量少一个。
异常
如果任何比较引发异常,则此函数将引发异常。
注意:无效的参数会导致未定义的行为。
例子1
让我们看一个简单的例子来演示 max() 的使用:
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "larger of 1 and 9999:" << std::max(1, 9999) << '\n'
<< "larger of 'a', and 'b':" << max('a', 'b') << '\n'
<< "longest of \"foo\", \"bar\", and \"hello\":" <<
max( { "foo", "bar", "hello" },
[](const string& s1, const string& s2) {
return s1.size() < s2.size();
}) << '\n';
return 0;
}
输出:
larger of 1 and 9999:9999 larger of 'a', and 'b':b longest of "foo", "bar", and "hello":hello
例子2
让我们看另一个简单的例子来演示使用默认版本的 max() 的使用:
#include <iostream> // std::cout
#include <algorithm> // std::max
using namespace std;
int main () {
cout << "max(1,2)==" << max(1,2) << '\n';
cout << "max(2,1)==" << max(2,1) << '\n';
cout << "max('a','z')==" << max('a','z') << '\n';
cout << "max(3.14,2.73)==" << 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
例子3
让我们看另一个简单的例子来演示使用比较函数的 max() 的使用:
#include<iostream>
#include<algorithm>
using namespace std;
// Defining the binary function
bool comp(int a, int b)
{
return (a < b);
}
int main()
{
int a = 7;
int b = 28;
cout << max(a,b,comp) << "\n";
// Returns the first one if both the numbers
// are same
cout << max(7,7,comp);
return 0;
}
输出:
28 7
示例 4
让我们看一个简单的例子来查找列表中的最大元素:
#include<iostream>
#include<algorithm>
using namespace std;
// Defining the binary function
bool comp(int a, int b)
{
return (a < b);
}
int main()
{
// Finding the largest of all the numbers
cout << "Maximum element is:"<< max({1, 2, 3, 4, 5, 10, -1, 7},comp) << "\n";
return 0;
}
输出:
Maximum element is:10
相关用法
- C++ Algorithm max_element()用法及代码示例
- C++ Algorithm make_heap()用法及代码示例
- C++ Algorithm minmax()用法及代码示例
- C++ Algorithm minmax_element()用法及代码示例
- C++ Algorithm min()用法及代码示例
- C++ Algorithm merge()用法及代码示例
- C++ Algorithm min_element()用法及代码示例
- C++ Algorithm remove_if()用法及代码示例
- C++ Algorithm remove()用法及代码示例
- C++ Algorithm set_union()用法及代码示例
- C++ Algorithm next_permutation()用法及代码示例
- C++ Algorithm upper_bound()用法及代码示例
- C++ Algorithm remove_copy_if()用法及代码示例
- C++ Algorithm random_shuffle()用法及代码示例
- C++ Algorithm pop_heap()用法及代码示例
- C++ Algorithm replace()用法及代码示例
- C++ Algorithm set_intersection()用法及代码示例
- C++ Algorithm lower_bound()用法及代码示例
- C++ Algorithm transform()用法及代码示例
- C++ Algorithm set_difference()用法及代码示例
注:本文由纯净天空筛选整理自 C++ Algorithm max()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。