c++模板实现不同类型的函数排序template与注意事项(一)

这里有C++STL——全面总结详细教程(附案例解析)(持续更新中)

利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 。

排序算法:选择排序。

用char和int数组进行测试。

typename可以用class替代。

 

注意事项:

  • 自动类型推导,必须推导出一致的数据类型T,才可以使用

  • 模板必须要确定出T的数据类型,才可以使用

    #include
    using namespace std;
    
    //数据交换
    template
    void mySwap(T&a,T&b) {
    	T temp = a;
    	a = b;
    	b = temp;
    }
    
    //选择排序,从大到小
    template
    void mySort(T arry[],int len) {
    	for (int i = 0; i < len; i++) {
    		int max = i;
    		for (int j = i + 1; j < len; j++) {
    			if (arry[max] < arry[j]) {
    				max = j;
    			}
    		}
    		if (max != i) {
    			mySwap(arry[max], arry[i]);
    		}
    	}
    }
    
    //打印输出
    template
    void printArray(T arr[], int len) {
    	for (int i = 0; i < len; i++) {
    		cout << arr[i] << " ";
    	}
    	cout << endl;
    }
    
    void test01() {
    	char charArr[] = "koewndsaf";
    	int num = sizeof(charArr) / sizeof(char);
    	mySort(charArr, num);
    	printArray(charArr, num);
    }
    
    void test02() {
    	int intArr[] = { 1,2,4,9,3,2,6,3,5,7 };
    	int num = sizeof(intArr) / sizeof(int);
    	mySort(intArr, num);
    	printArray(intArr, num);
    }
    
    int main() {
    	test01();
    	test02();
    
    	system("pause");
    	return 0;
    }

    c++模板实现不同类型的函数排序template与注意事项(一)_第1张图片

你可能感兴趣的:(C/C++)