使用函数模板实现任意类型的数组的降序排序。
时间: 2024-02-13 12:01:55 浏览: 31
可以使用函数模板实现对任意类型的数组进行降序排序,示例代码如下:
```cpp
#include<iostream>
#include<algorithm>
using namespace std;
template<typename T>
void sort_desc(T arr[], int n){
sort(arr, arr + n, greater<T>());
}
int main(){
int a[] = {5, 2, 8, 3, 1};
double b[] = {3.14, 2.718, 0.618, 1.414, 1.732};
int n1 = sizeof(a) / sizeof(a[0]);
int n2 = sizeof(b) / sizeof(b[0]);
sort_desc(a, n1);
sort_desc(b, n2);
cout << "a[] after sort: ";
for(int i = 0; i < n1; i++){
cout << a[i] << " ";
}
cout << endl << "b[] after sort: ";
for(int i = 0; i < n2; i++){
cout << b[i] << " ";
}
cout << endl;
return 0;
}
```
在上面的代码中,我们定义了一个函数模板 `sort_desc`,它有两个参数,分别是任意类型的数组 `arr` 和数组的长度 `n`,用于对数组进行降序排序。其中,我们使用了 `algorithm` 头文件中的 `sort` 函数,第三个参数 `greater<T>()` 表示使用降序排序。
在 `main` 函数中,我们定义了两个数组 `a` 和 `b`,分别为 `int` 和 `double` 类型,然后调用 `sort_desc` 函数对它们进行降序排序,最后输出排序后的结果。
输出结果为:
```
a[] after sort: 8 5 3 2 1
b[] after sort: 3.14 2.718 1.732 1.414 0.618
```
阅读全文