看图

04 泛型编程

研究数据结构

  • 专注于数据对象中数据元素之间的关系

  • 专注于特定结构之上的算法

  • 不需要关注数据元素的具体类型

泛型编程的概念

  • 不考虑具体数据类型的编程方式

    对于Swap函数可以考虑下面的泛型写法

     void Swap(T& a, T& b) {
         T t = a;
         a = b;
         b = t;
     ​
     }

    Swap泛型写法中的T不是一个具体的数据类型,而是泛指任意的数据类型。

泛型编程简介

04 泛型编程

04 泛型编程

04 泛型编程

 

04 泛型编程

04 泛型编程

完整代码案例:

 #include <iostream>
 ​
 using namespace std;
 ​
 template<typename T>  //开始函数的泛型编程
 void Swap(T& a,T& b)
 {
     T t = a;
     a = b;
     b = t;
 }
 ​
 template <typename T>   //开始类的泛型编程
 class Op
 {
 public:
     T process(T v)
     {
         return v * v;
     }
 };
 ​
 int main()
 {
     int a = 1;
     int b = 2;
     Swap(a,b);     //函数的模板的调用,可以自动识别数据类型
     cout << "a=" << a << " " << "b=" << b << endl;
 ​
     double c = 0.01;
     double d = 0.02;
     Swap<double>(c,d);    //函数的模板的调用,显示指定数据类型
     cout << "c=" << c << " " << "d=" << d << endl;
 ​
     Op<int> opInt;    //类定义对象时,必须加<type>特定的类型定义
     Op<double> opDouble;   //类定义对象时,必须加<type>特定的类型定义
 ​
     cout << "5*5 = " << opInt.process(5) << endl;
     cout << "0.3*0.3 = " << opDouble.process(0.3) << endl;
 ​
 ​
     return 0;
 }
 ​

Qt运行结果

04 泛型编程

总结: -模板是泛型编程理论在C++的实现 -函数模板支持参数的自动推倒和显示指定 -类模板在使用时只能显示的指定类型 -类模板非常适用于编写数据结构相关的代码

相关文章:

  • 2021-12-08
  • 2021-07-22
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-05
  • 2021-07-29
  • 2021-08-02
相关资源
相似解决方案