zoukankan      html  css  js  c++  java
  • 模板

      模板函数  调用的时候需要传递类型进去(显示调用)

    如果根据传入的参数 可以确定是什么类型 那么就可以省略传入类型(隐性调用)

    函数模板 根据传入的类型 去生成一个适合的模板函数

    一个函数的调用优先调用普通函数 其次模板函数 最后强转匹配普通函数

    template是关键字后面加<>

    类模板 根据传入类型 对应模板类 定义对象 定义对象格式 必须使用显示指明类型

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 struct A
     5 {
     6     int data;
     7 };
     8 template<class T>//模板T 也可以写其他字母 T是未确定类型的 可以传任意类型的 根据赋值确定调用 比较灵活
     9 void bulletSort(T arr[], int size)//冒泡排序
    10 {
    11     T temp;
    12     for (int i = 0; i < size-1; i++)
    13     {
    14         for (int j = 0; j < size-1-i; j++)
    15         {
    16             if (arr[j+1]>arr[j])
    17             {
    18                 temp = arr[j + 1];
    19                 arr[j + 1] = arr[j];
    20                 arr[j] = temp;
    21             }
    22 
    23         }
    24 
    25     }
    26 }
    27 template<class T>
    28 void fin(T a, T b)
    29 {
    30     cout << "调用一个函数1" << endl;
    31     cout << a << b << endl;//避免传入不可打印类型
    32 }
    33 template<class T1,class T2>
    34 void fun(T1 a, T2 b)//这里可以传两个 不同类型的参数 
    35 {
    36 
    37 }
    38 void fun(int a, int b)
    39 {
    40     cout << "调用函数2" << endl;
    41 }
    42 int main()
    43 {
    44     int arr[10];
    45     float brr[20] = { 1.9f, 2.3f, 33.0f, 201.2f };
    46     bulletSort<float>(brr, 20);//调用函数的时候传入T的类型
    47     bulletSort(brr, 20);//根据函数的参数让T自动推导出函数的类型
    48     /*
    49     fun<int>(3,4);定义T的类型 传入相关类型的参数
    50     当T作为参数的时候定义了两个类型
    51     如果这两个类型不同的化 必须指明T的类型 没法自动推导
    52     fun<double>(3.0,4);
    53     
    54     
    55     
    56     */
    57     //A a, b;
    58     //fun(a, b);
    59     fun(3, 4);//优先调用普通函数 再去调用模板函数 最后再去查看强转匹配普通函数
    60     fun(3.0, 4.0);
    61     //根据类型 去生成一个合适的模板对象
    62     for (auto s : brr)        //遍历整个数组
    63     {
    64         cout << s << ' ';
    65     }
    66     vector<int> vec;//定义对象格式必须显式指明类型
    67     //迭代器 理解成指针
    68     cin.get();
    69     return 0;
    70 
    71 }
  • 相关阅读:
    Python M3 面向对象
    Python 基础
    Python 基础
    Python 基础
    Python 作业
    Python 基础
    Python 基础
    【机器学习】周志华 读书笔记 第三章 线性模型
    【机器学习】周志华 读书笔记 第二章 模型评估与选择
    【机器学习】周志华 读书笔记 第一章 绪论
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11397791.html
Copyright © 2011-2022 走看看