1. 程式人生 > >c++知識點---函式模板實現求陣列的最大值

c++知識點---函式模板實現求陣列的最大值

題目:

編寫一個函式模板,求陣列中的最大元素,並寫出呼叫此函式模板的完整程式,使的到函式呼叫時,陣列的型別可以是整型也可以是雙精度型別

知識點:利用函式模板來解決陣列問題,使用陣列的引用來傳遞引數不太友好。陣列引用必須指明陣列的元素個數,比如int (&arr)[5]。表示含有5個元素的陣列引用,這裡的5是不能被省略的。這樣極大的限制了自定義函式模板處理陣列的範圍。

所以,在函式模板中傳遞陣列引數,還是用指標最好。

main.cpp

#include <iostream>
using namespace std;
#include "class.h"
int main()
{
	int arr1[4] = { 5,32,78,123 };
	double arr2[4] = { 56.1,45.3,78.32,49.0 };
	cout << "max = " << maxInArray(arr1, 4) << endl;
	cout << "max = " << maxInArray(arr2, 4) << endl;
	system("pause");
	return 0;
}

class.h
#pragma once
template <typename T>//模板宣告
 maxInArray(T* arr,int num)//陣列的引用應寫成 T (&arr)[4],但要指明陣列的元素個數,限制了不同陣列來求最大值
{
	T max = arr[0];
	for (int i = 1; i < num; i++)
	{
		arr[i] > max ? max = arr[i] :0;
	}
	return max;
}

執行結果: