答案 0 :(得分:9)
答案 1 :(得分:3)
答案 2 :(得分:3)
答案 3 :(得分:2)
答案 4 :(得分:2)
答案 5 :(得分:1)
答案 6 :(得分:1)
答案 7 :(得分:1)
更通用的问题是找到给定输入的最大值。我们可以将 std::max
概括为这样的:
template <typename T, typename ... Ts>
T Max (const T && input_1, const Ts && ... inputs)
{
// initialise:
T max = input_1;
// find max:
([&] (T i)
{
if (i > max)
max = i;
} (inputs), ...);
return max;
}
(上面是 c++17
样式,但我们可以在前面的 c++
中以不太漂亮的方式编写相同的东西)
这样可以找到最大值:
int max = Max<int>(0, up(), down(), right());
我们添加 <int>
以指定我们要将输入转换为什么,以防某些是 unsigned
、float
等。
如果调用的顺序确实很重要,那么我们能做的再好不过了:
int max = 0;
max = std::max(max, up());
max = std::max(max, down());
max = std::max(max, right());
我们可以创建一个泛型函数,比如上面的 Max
,它接受一个函数/函子列表,但这是一个如此不寻常的问题,我怀疑你会重新-使用代码。