首页 > 编程语言 > 详细

c++模板 template

时间:2021-08-11 23:33:53      阅读:19      评论:0      收藏:0      [点我收藏+]

c++模板template

模板就是建立通用的模具,大大提高复用性

模板的特点:

  • 模板不可以直接使用,它只是一个框架

  • 模板的通用并不是万能的

 

函数模板

  • C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板

  • C++提供两种模板机制:函数模板类模板

函数模板案例

案例描述:

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

  • 排序规则从大到小,排序算法为快速排序

  • 分别利用char数组int数组进行测试

总结:模板可以提高代码复用,需要熟练掌握

 template<typename T>
 函数声明或定义
 template 声明创建模板
 ?
 typename 表面其后面的符号是一种数据类型,可以用class代替
 ?
 T 通用的数据类型,名称可以替换,通常为大写字母

 

 1  #include <iostream>
 2  #include <cstring>
 3  ?
 4  using namespace std;
 5  ?
 6  // 函数模板 类型任意,
 7  template<class T>  // or <typename T>
 8  void mySwap( T &a, T &b) {
 9      T temp = a ;
10      a = b;
11      b = temp;
12  }
13  ?
14  template<class T>
15  void mySort (T arr[], int l, int r) {
16      if (l >= r) return ;
17      int x = arr[l + r >> 1] ;
18      int i = l - 1, j = r + 1;
19      
20      while (i < j) {
21          do i++; while (arr[i] < x);
22          do j--; while (arr[j] > x);
23          if (i < j) mySwap(arr[i],arr[j]);
24      }
25      mySort(arr, l, j);
26      mySort(arr, j+1, r);
27      
28  }
29  ?
30  template <class T>
31  void printArray(T arr[], int len ) {
32      
33      for (int i = 0; i < len; i++) cout << arr[i] <<    ;
34      cout << endl;
35  }
36  ?
37  void testMySort() {
38      char charArr[] = "qazwsxedc";
39      int num = sizeof(charArr) / sizeof(char);
40      mySort(charArr, 0, num - 1);
41      printArray(charArr, num);
42  }
43  ?
44  ?
45  ?
46  int main() {
47      int a = 10, b = 20;
48      // 自动类型推导  必须推导出一致的数据类型T,才可以使用
49      mySwap(a,b); 
50      cout << a <<  << b << endl;
51      
52      string s1, s2;
53      s1 = "s1s1";
54      s2 = "s2s2";
55      // 显示指定类型   func<int>(); //利用显示指定类型的方式,给T一个类型,才可以使用
56      mySwap<string>(s1,s2);
57      cout << s1 <<   << s2 << endl;
58      
59      testMySort();
60      
61      system("pause");
62      
63      return 0;
64  }
65  

 

c++模板 template

原文:https://www.cnblogs.com/leoaioliabao/p/15130350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!