用函数模板原型template<typename T> T* findmin(int *minIndex, T 编写出一个findmin函数,寻找数组中的最小元素
时间: 2024-03-25 19:39:32 浏览: 66
可以使用函数模板来编写一个能够寻找数组中最小元素的`findmin`函数,代码如下:
```cpp
#include <iostream>
using namespace std;
template<typename T>
T* findmin(int *minIndex, T a[], int size);
int main() {
int arr1[] = {5, 3, 8, 1, 9, 2};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int minIndex1;
int* ptr1 = findmin(&minIndex1, arr1, n1);
cout << "The minimum value in the integer array is: " << *ptr1 << ", and its index is: " << minIndex1 << endl;
double arr2[] = {5.1, 3.2, 8.5, 1.2, 9.7, 2.4};
int n2 = sizeof(arr2) / sizeof(arr2[0]);
int minIndex2;
double* ptr2 = findmin(&minIndex2, arr2, n2);
cout << "The minimum value in the double array is: " << *ptr2 << ", and its index is: " << minIndex2 << endl;
return 0;
}
template<typename T>
T* findmin(int *minIndex, T a[], int size) {
T min_val = a[0];
*minIndex = 0;
for (int i = 1; i < size; i++) {
if (a[i] < min_val) {
min_val = a[i];
*minIndex = i;
}
}
return &a[*minIndex];
}
```
运行结果为:
```
The minimum value in the integer array is: 1, and its index is: 3
The minimum value in the double array is: 1.2, and its index is: 3
```
函数模板使用 `template<typename T>` 声明,其中 `typename` 可以替换为 `class`。函数模板的参数列表中可以使用模板参数,这里使用 `typename T` 声明了一个类型参数 `T`,表示函数可以接受任何类型的数组作为参数。在函数实现中,可以使用 `T` 来表示参数类型。
阅读全文