编写一个函数模板,它的功能是计算一个类型为T的一维数组中的最大元素与最小元素,并返回最大元素与最小元素的和。 template <class T> T find(T arr[ ], size_t n);
时间: 2024-03-23 22:39:03 浏览: 41
下面是一个实现了上述功能的函数模板:
```c++
template <class T>
T find(T arr[], size_t n) {
T max_val = arr[0];
T min_val = arr[0];
for (size_t i = 1; i < n; ++i) {
if (arr[i] > max_val) {
max_val = arr[i];
}
if (arr[i] < min_val) {
min_val = arr[i];
}
}
return max_val + min_val;
}
```
这个函数模板使用了模板参数 T 来表示数组中元素的数据类型,使用了函数参数 n 来表示数组的大小。在函数体中,使用了一个 for 循环来遍历数组中的元素,并记录数组中的最大值和最小值。最后,返回最大值和最小值的和。
注意,这个函数模板只能用于一维数组。如果要处理多维数组,需要使用其他的函数模板或者手动编写代码来实现。
相关问题
定义一个函数模板,该函数的功能是将一维数组a中的元素逆序
好的,下面是一个将一维数组逆序的函数模板:
```c++
template<typename T>
void reverseArray(T a[], int size){
for(int i=0; i<size/2; i++){
T temp = a[i];
a[i] = a[size-i-1];
a[size-i-1] = temp;
}
}
```
这个函数模板接受一个一维数组和数组大小作为参数,然后使用一个循环将数组中元素逆序。在循环中,我们使用一个临时变量来交换数组中两个元素的值。这里使用了模板来支持不同类型的数组,因为我们不知道调用这个函数时会传入什么类型的数组。
定义一个函数模板,该函数功能是将一维数组a中的元素逆序
好的,以下是一个将一维数组逆序的函数模板:
```c++
template<typename T, size_t N>
void reverse_array(T (&a)[N])
{
for (size_t i = 0; i < N / 2; ++i) {
std::swap(a[i], a[N - i - 1]);
}
}
```
该函数模板使用了两个模板参数:类型参数 `T` 和非类型参数 `N`。其中,`T` 表示数组元素的类型,`N` 表示数组的大小。
函数模板中使用了数组的引用作为参数,这样可以避免数组退化成指针。在函数体内,使用循环和 `std::swap()` 函数将数组元素逆序。
使用该函数模板的示例代码如下:
```c++
int a[] = {1, 2, 3, 4, 5};
reverse_array(a);
for (int i = 0; i < 5; ++i) {
std::cout << a[i] << " ";
}
// 输出:5 4 3 2 1
```
阅读全文