C++函式模板案例

Ricky001發表於2024-12-06

案例描述:
利用函式模板封裝一個排序的函式,可以對不同資料型別陣列進行排序
排序規則從大到小,排序演算法為選擇排序
分別利用char陣列和int陣列進行測試
示例:

點選檢視程式碼
```cpp
#include <iostream>
using namespace std;

//實現通用 對陣列進行排序的函式
//規則 從大到小
//演算法 選擇
//測試 char 陣列、int陣列

//交換函式模板
template<typename T>
void mySwap(T &a,T &b)
{
    T temp=a;
    a=b;
    b=temp;
}
//排序演算法
template<typename T>
void mySort(T arr[],int len)
{
    for (int i = 0; i < len; i++)
    {
        int max=i;//認定最大值下標
        for (int j = i+1; j < len; j++)
        {
            //認定的最大值比遍歷出的數值要小,說明j下標的元素才是真正的最大值
            if (arr[max]<arr[j])
            {
                max=j;
            }
            
        }
        if (max!=i)
        {
            //交換max和i元素
            mySwap(arr[max],arr[i]);
        }
        
    }
    
}
//提供一個列印陣列的模板
template<class T>
void printArray(T arr[],int len)
{
    for (int i = 0; i < len; i++)
    {
        cout<<arr[i]<<" ";
    }
    cout<<endl;
}
void test02()
{
    //測試int陣列
    int intArr[]={1,7,5,3,6,2};
    int num=sizeof(intArr)/sizeof(int);
    mySort(intArr,num);
    printArray(intArr,num);
}
void test01()
{
    //測試char陣列
    char charArr[]="badcfe";
    int num=sizeof(charArr)/sizeof(char);
    mySort(charArr,num);
    printArray(charArr,num);
}
int main()
{
    test01();
    test02();
    return 0;
}
</details>

相關文章