鱼C论坛

 找回密码
 立即注册
查看: 1390|回复: 1

[已解决]求助

[复制链接]
发表于 2023-12-21 19:14:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
利用函数模板实现对整型数组和字符数组的排序。

【样例输入】

无需手动输入

【样例输出】

before sort: 5 55 2 22 4 77
after sort: 2 4 5 22 55 77

before sort: n s a j l k d s
after sort: a d j k l n s s


这题怎么做
最佳答案
2023-12-21 19:14:29
可以使用函数模板来实现对不同类型数组的排序。以下是一个利用函数模板实现整型数组和字符数组排序的示例代码:
  1. #include <iostream>
  2. #include <algorithm>
  3. template <typename T>
  4. void sortArray(T arr[], int length) {
  5.     std::sort(arr, arr + length);
  6. }
  7. template <>
  8. void sortArray<char>(char arr[], int length) {
  9.     std::sort(arr, arr + length);
  10. }
  11. template <typename T>
  12. void printArray(T arr[], int length) {
  13.     for (int i = 0; i < length; i++) {
  14.         std::cout << arr[i] << " ";
  15.     }
  16.     std::cout << std::endl;
  17. }
  18. int main() {
  19.     int intArr[] = {5, 55, 2, 22, 4, 77};
  20.     char charArr[] = {'n', 's', 'a', 'j', 'l', 'k', 'd', 's'};
  21.     std::cout << "before sort: ";
  22.     printArray(intArr, sizeof(intArr)/sizeof(int));
  23.     sortArray(intArr, sizeof(intArr)/sizeof(int));
  24.     std::cout << "after sort: ";
  25.     printArray(intArr, sizeof(intArr)/sizeof(int));
  26.     std::cout << "\nbefore sort: ";
  27.     printArray(charArr, sizeof(charArr)/sizeof(char));
  28.     sortArray(charArr, sizeof(charArr)/sizeof(char));
  29.     std::cout << "after sort: ";
  30.     printArray(charArr, sizeof(charArr)/sizeof(char));
  31.     return 0;
  32. }
复制代码

该代码中,首先定义了一个通用的`sortArray`函数模板,它接受一个数组和数组长度作为参数,并使用`std::sort`函数对数组进行排序。然后,通过特化(explicit specialization),对字符数组进行排序的方式进行了重载。

在`main`函数中,我们创建了一个整型数组`intArr`和一个字符数组`charArr`,并分别调用`sortArray`和`printArray`函数模板来实现排序和输出结果。需要注意的是,我们需要传递数组的长度给这两个函数,以确保能够正确处理数组的元素。

最后,运行程序,即可得到排序结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-21 19:14:29 | 显示全部楼层    本楼为最佳答案   
可以使用函数模板来实现对不同类型数组的排序。以下是一个利用函数模板实现整型数组和字符数组排序的示例代码:
  1. #include <iostream>
  2. #include <algorithm>
  3. template <typename T>
  4. void sortArray(T arr[], int length) {
  5.     std::sort(arr, arr + length);
  6. }
  7. template <>
  8. void sortArray<char>(char arr[], int length) {
  9.     std::sort(arr, arr + length);
  10. }
  11. template <typename T>
  12. void printArray(T arr[], int length) {
  13.     for (int i = 0; i < length; i++) {
  14.         std::cout << arr[i] << " ";
  15.     }
  16.     std::cout << std::endl;
  17. }
  18. int main() {
  19.     int intArr[] = {5, 55, 2, 22, 4, 77};
  20.     char charArr[] = {'n', 's', 'a', 'j', 'l', 'k', 'd', 's'};
  21.     std::cout << "before sort: ";
  22.     printArray(intArr, sizeof(intArr)/sizeof(int));
  23.     sortArray(intArr, sizeof(intArr)/sizeof(int));
  24.     std::cout << "after sort: ";
  25.     printArray(intArr, sizeof(intArr)/sizeof(int));
  26.     std::cout << "\nbefore sort: ";
  27.     printArray(charArr, sizeof(charArr)/sizeof(char));
  28.     sortArray(charArr, sizeof(charArr)/sizeof(char));
  29.     std::cout << "after sort: ";
  30.     printArray(charArr, sizeof(charArr)/sizeof(char));
  31.     return 0;
  32. }
复制代码

该代码中,首先定义了一个通用的`sortArray`函数模板,它接受一个数组和数组长度作为参数,并使用`std::sort`函数对数组进行排序。然后,通过特化(explicit specialization),对字符数组进行排序的方式进行了重载。

在`main`函数中,我们创建了一个整型数组`intArr`和一个字符数组`charArr`,并分别调用`sortArray`和`printArray`函数模板来实现排序和输出结果。需要注意的是,我们需要传递数组的长度给这两个函数,以确保能够正确处理数组的元素。

最后,运行程序,即可得到排序结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 11:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表