|
发表于 2023-12-21 19:14:29
|
显示全部楼层
本楼为最佳答案
可以使用函数模板来实现对不同类型数组的排序。以下是一个利用函数模板实现整型数组和字符数组排序的示例代码:
- #include <iostream>
- #include <algorithm>
- template <typename T>
- void sortArray(T arr[], int length) {
- std::sort(arr, arr + length);
- }
- template <>
- void sortArray<char>(char arr[], int length) {
- std::sort(arr, arr + length);
- }
- template <typename T>
- void printArray(T arr[], int length) {
- for (int i = 0; i < length; i++) {
- std::cout << arr[i] << " ";
- }
- std::cout << std::endl;
- }
- int main() {
- int intArr[] = {5, 55, 2, 22, 4, 77};
- char charArr[] = {'n', 's', 'a', 'j', 'l', 'k', 'd', 's'};
- std::cout << "before sort: ";
- printArray(intArr, sizeof(intArr)/sizeof(int));
- sortArray(intArr, sizeof(intArr)/sizeof(int));
- std::cout << "after sort: ";
- printArray(intArr, sizeof(intArr)/sizeof(int));
- std::cout << "\nbefore sort: ";
- printArray(charArr, sizeof(charArr)/sizeof(char));
- sortArray(charArr, sizeof(charArr)/sizeof(char));
- std::cout << "after sort: ";
- printArray(charArr, sizeof(charArr)/sizeof(char));
- return 0;
- }
复制代码
该代码中,首先定义了一个通用的`sortArray`函数模板,它接受一个数组和数组长度作为参数,并使用`std::sort`函数对数组进行排序。然后,通过特化(explicit specialization),对字符数组进行排序的方式进行了重载。
在`main`函数中,我们创建了一个整型数组`intArr`和一个字符数组`charArr`,并分别调用`sortArray`和`printArray`函数模板来实现排序和输出结果。需要注意的是,我们需要传递数组的长度给这两个函数,以确保能够正确处理数组的元素。
最后,运行程序,即可得到排序结果。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|