当前位置:
首页 >
STL1-函数模板
发布时间:2025/3/15
41
豆豆
1、函数模板和普通函数区别
//普通函数可以进行自动类型转换, //函数模板必须精确类型匹配; //函数模板可以被重载;c++优先考虑普通函数;#include<iostream> using namespace std; //函数模板-->产生模板函数-->调用函数 template<class T> T MyAdd(T a, T b) {cout << "调用函数模板" << endl;return a + b; } void MyAdd(int a, int b) {cout << "调用函数" << endl; } int main() {int a = 10, b = 20;MyAdd(a, b); double da = 1.12, db = 1.14;MyAdd(da, db); MyAdd(2, 'A');return 0; }运行结果:
2、函数模板机制
#include<iostream> using namespace std; //函数模板-->产生模板函数-->调用函数 template<class T> T MyAdd(T a, T b) {return a + b; } int main() {int a = 10, b = 20;MyAdd(a, b); //产生MyAdd(int a,int b)函数并调用double da = 1.12, db = 1.14;MyAdd(da,db); //产生MyAdd(double a,double b)函数并调用MyAdd(a, a); //直接调用第一次产生的MyAdd(int a,int b)函数return 0; }
3、函数模板应用-int类型和char类型排序
#include<iostream> using namespace std; //对char类型和Int类型数组进行排序 //void PrintArray(int *arr, int len) //{ // for (int i = 0; i < len; i++) // { // cout << arr[i] << " "; // } // cout << endl; //} template<class T> void PrintArray(T *arr, int len) {for (int i = 0; i < len; i++){cout << arr[i] << " ";}cout << endl; } void MySwap(int &a, int &b) {int temp = a;a = b;b = temp; }//冒泡排序 void MySort(int* arr, int len) {for (int i = 0; i < len; i++){for (int j = 0 ;j < len-i-1; j++){if (arr[j] < arr[j+1])MySwap(arr[j], arr[j+1]);}} } //选择排序 //void MySort1(int* arr, int len) //{ // for (int i = 0; i < len; i++) // { // for (int j = i+1; j < len; j++) // { // if (arr[i] < arr[j]) // { // int temp = arr[i]; // arr[i] = arr[j]; // arr[j] = temp; // } // } // } //} template<class T> void MySort1(T* arr, int len) {for (int i = 0; i < len; i++){for (int j = i + 1; j < len; j++){if (arr[i] < arr[j]){T temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}} } int main(void) {//数组int arr[] = { 2,6,1,8,9,2 };//数组长度int len = sizeof(arr) / sizeof(int);cout << "排序前:";PrintArray(arr, len);MySort1(arr, len);cout << "排序后:";PrintArray(arr, len);char chArr[] = { 'a','c','f','b','e' };int lench = sizeof(chArr) / sizeof(char); cout << "排序前:";PrintArray(chArr, lench); MySort1(chArr, lench);cout << "排序后:";PrintArray(chArr, lench);return 0; }
总结
- 上一篇: 什么是python标识符_Python:
- 下一篇: github搜索技巧_和逛知乎、刷微博一