最小值的引用

题目描述

补全返回最小值引用的函数minRef,使程序能计算输入整数中的最大值。

关于输入

5个正整数

关于输出

最大值

核心技巧

  • 返回引用的函数,返回值类型前面加上&符号
  • 引用绑定的值不能是临时值,因此参数也应通过引用传递

设计思想

  • 对于最终的两个值,将较小值赋值为 INT_MAX,就可以使下次取得的较小值是最终的最大值
  • 以较小的效率为代价实现了最大值最小值接口统一,是一种有趣的设计思想。许多语言用相同的方法完成比较,只需 <== 即可实现全部六种比较方式。

注意

INT_MAX 是 C++ 中的一个宏,在 <climits> 中定义,表示整数的最大值,你无需定义。

参考答案

#include <iostream>
#include <climits>
using std::cin, std::cout, std::endl;

// minRef
int& minRef(int& a, int& b) {
    return a < b ? a : b;
}
int main() {
    int a = 0, b = 0;
    for (int i = 0; i < 5; i++) {
        cin >> minRef(a, b);
    }
    minRef(a, b) = INT_MAX;
    cout << minRef(a, b) << endl;
}