c++知識點---函式模板實現求陣列的最大值
阿新 • • 發佈:2019-01-30
題目:
編寫一個函式模板,求陣列中的最大元素,並寫出呼叫此函式模板的完整程式,使的到函式呼叫時,陣列的型別可以是整型也可以是雙精度型別。
知識點:利用函式模板來解決陣列問題,使用陣列的引用來傳遞引數不太友好。陣列引用必須指明陣列的元素個數,比如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;
}
執行結果: