5.编写模板函数 max5(),它将一个包含5个T类型元素的数组作为参数,并返回数组中最大的元素
(由于长度固定,因此可以在循环中使用硬编码,而不必通过参数来传递)。在一个程序中使用该函数,将
T替换为一个包含5个int值的数组和一个包含5个dowble 值的数组,以测试该函数。
分析:这里有一个问题函数带返回值,但是我们知道用模板编程是不确定数据类型的,所以返回值得返回就有讲究了。
这里面我们不知道传入得是具体的什么数据类型得数据,故记录数组的位置,直接用过位号弹出去。从而避开了返回数据类型的判断
#pragma region 练习1.cpp
/*
*/
#if 1
#include <iostream>
#include <array>
using namespace std;
template<typename T>
const T& max5(const array<T, 5>& arr)
{
//应为这里不知道数据类型是具体的
//所以只把她的编号记录下来,直接返回出去
unsigned arrMaxId = 0;
for (unsigned i = 0; i < 5; i++){
if (arr[i] > arr[arrMaxId]){
arrMaxId = i;
}
}
return (arr[arrMaxId]);
}
int main(){
array<int, 5> intArr = {21,5,66,90,5};
for (const auto& e: intArr){
cout << e << " ";
}
cout << "-------Max: " << max5(intArr) << endl;
array<double, 5> doubleArr = {3.3,5.2,6.1,2.0,-2.1};
for (const auto&e:doubleArr){
cout << e << " ";
}
cout << " ----max:" << max5(doubleArr);
cout << endl;
return 0;
}
#endif
#pragma endregion
此例子参考标准答案。即在max5做范围类型处理的时候,用到了此方法。
236

被折叠的 条评论
为什么被折叠?



