当前位置: 首页 > news >正文

1.函数模板基础

1.1函数模板作用:


        建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表,提高复用性

1.2语法:

//第一种
template <typename T>
函数声明或定义//第二种
template <class T>
函数声明或定义

解释:
template:关键字,声明创建模板
typename和class:关键字,声明其后面的符号是一种数据类型,可以用class代替
T:通用的数据类型名称可以替换,通常为大小写

1.3示例:

#include<iostream>
#include<math.h>
using namespace std;//利用模板提供通用的交换函数
template < typename T >
void Swap(T & a, T & b)
{T temp = a;a = b;b = temp;
}void test()
{int a = 10, b = 20;//利用模板实现交换//1.自动类型推导Swap(a, b);//2.显方指定类型Swap<int>(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;
}int main()
{test();return 0;
}


1.4模板注意事项:


1.模板必须要确定出t的数据类型才可以使用

#include<iostream>
#include<math.h>
using namespace std;//利用模板提供通用的交换函数
template < typename T >
void func()
{cout << "func的调用" << endl;
}void test()
{func();
}int main()
{test();return 0;
}

        运行发现报错了,这是因为。没有确定出T的类型,下面我们显示的指定出T的类型:

#include<iostream>
#include<math.h>
using namespace std;//利用模板提供通用的交换函数
template < typename T >
void func()
{cout << "func的调用" << endl;
}void test()
{func<int>();
}int main()
{test();return 0;
}
//运行结果:
func的调用

1.5案例:

        1.创建一个通用的快速排序的函数模板,可以排序各种数据类型的数组中的元素

        2.创建一个通用的打印输出的函数模板,可以输出各种数据类型的数组中的元素

代码如下:

#include<iostream>
#include<stdlib.h>
using namespace std;#define SIZE 6//1.创建通用快速排序函数模板
template <class T>
void quick_sort(T num[], int low, int high )
{int i,j;T temp;T tmp;i = low;j = high;tmp = num[low];   if(i > j)  {return;}while(i != j){while(num[j] <= tmp && i < j)   {j--;}while(num[i] >= tmp && i < j){i++;}if(i < j){temp = num[j];num[j] = num[i];num[i] = temp;}}num[low] = num[i];num[i] = tmp;quick_sort(num,low,i-1);quick_sort(num,i+1,high);
}//2.创建通用打印输出函数模板
template <typename T>
void Print(T array[SIZE])
{for(int i = 0; i < SIZE; i++){cout << array[i] << " ";}cout << endl;
}//测试函数
void test()
{//测试1//创建一个int数组int array1[SIZE] ={1, 2, 3, 4,5,6};//2.排序quick_sort<int>(array1,0,SIZE-1);//3.输出排序结果Print<int>(array1);//测试2//创建一个float数组float array2[SIZE] ={1.5, 2.5, 3.6, 4.4, 5.9, 6.7};//2.排序quick_sort<float>(array2,0,SIZE-1);//3.输出排序结果Print<float>(array2);
}
int main()
{test();return 0;
}

运行结果:

6 5 4 3 2 1
6.7 5.9 4.4 3.6 2.5 1.5

http://www.lryc.cn/news/302594.html

相关文章:

  • 22-k8s中pod的调度-亲和性affinity
  • 通俗易懂,Spring Bean生命周期管理的理解
  • 找座位 - 华为OD统一考试(C卷)
  • npm run dev运行出现NODE_OPTIONS=--max_old_space_size=4096 vite --mode dev --host?
  • 钠离子电池技术
  • 第三十六天| 435. 无重叠区间、763.划分字母区间、56. 合并区间
  • React setState同步还是异步
  • Docker安装和使用Redis
  • 四分位距IQR_ interquartile range
  • Vision Transformer - VIT
  • HTTP与HTTPS:网络安全之门户
  • 头歌:共享单车之数据分析
  • MySQL的数据类型和细节
  • 自建AWS S3存储服务
  • 『论文阅读|研究用于视障人士户外障碍物检测的 YOLO 模型』
  • LeetCode--1445. 苹果和桔子
  • Java基础知识
  • 并发编程-Synchronized
  • C语言——从头开始——深入理解指针(1)
  • 微信小程序-绑定数据并在后台获取它
  • 【删除数组用delete和Vue.delete有什么区别】
  • 【QT+QGIS跨平台编译】之四十二:【QWT+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • yum方式快速安装mysql
  • 基于Java的家政预约管理平台
  • C语言前世今生
  • android aidl进程间通信封装通用实现-用法说明
  • 【Java中23种设计模式-单例模式2--懒汉式线程不安全】
  • 【后端高频面试题--Linux篇】
  • 网络原理HTTP/HTTPS(2)
  • 【Java中23种设计模式-单例模式2--懒汉式2线程安全】