首页 > 解决方案 > 如何返回 3 个值之间的最大值?

问题描述

我正在尝试使用max函数返回最大值,但它不适用于 3 个值。

代码块错误:

错误:“__comp”不能用作函数

编码:

#include <iostream>
using namespace std;

int main()
{
    cout << max(5, 10, 20);
}

标签: c++maxoverloadinginitializer-listoverload-resolution

解决方案


std::max使用这个接受类型对象的重载函数std::initializer_list<int>

cout << max( { 5, 10, 20 } );

该函数具有以下声明

template<class T>
constexpr T max(initializer_list<T> t);

否则编译器会尝试选择函数

template<class T, class Compare>
constexpr const T& max(const T& a, const T& b, Compare comp);

并发出错误。

请注意,您需要包含标题<algorithm>


推荐阅读