首页 > 编程语言 >c++函数模板

c++函数模板

时间:2023-02-26 17:32:42浏览次数:41  
标签:函数 int double c++ Swap 模板 定义

函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。

例如如果定义一个2个数交换值的函数,如果2个数是int,那就需要定义一个Swap(int i,int j)的函数,那如果2个数是double类型的就需要再定义一个Swap(double i,double j)的函数,那还有其他类型的话还要继续定义,其实实现的方式都一样,只是类型不同,这就需要函数模板。

template <typename T>  
void Swap(T &a,T &b);
int main(){

int i = 10;
int j = 20;
Swap(i,j);
cout << i << "," << j << endl;
double x = 10.1;
double y = 10.2;
Swap(x,y);
cout << x << "," << y << endl;
return 0;

}

template <typename T>
void Swap(T &a,T &b){

T temp;
temp = a;
a = b;
b = temp;
}

1、使用template <typename T> 或者template <class T>

T可以是任意有效的变量名,使用T只是比较简单。  

2、函数中需要的类型改成T。如void Swap(T &a,T &b);

3、函数的实现中的变量类型也改成T。

注意,函数模板不能缩短可执行程序。最终仍将由两个独立的函数定义(int类型和double类型),就像以手工方式定义了这些函数一样。最终的代码不包含任何模板,而只包含了为程序生成的实际函数。使用模板的好处是,它使生成多个函数定义更简单、更可靠。

标签:函数,int,double,c++,Swap,模板,定义
From: https://blog.51cto.com/u_3764469/6086650

相关文章

  • 三种方法写一个函数统计二进制中1的个数
    第一种方法#include<stdio.h>intcount_bit(unsignedintn){intcount=0;while(n){if(n%2==1)count++;n=n/2;}returncount;}intmain(){intn=......
  • (非函数方法)查找有序数组中x的位置(二分/折半)
    #include<stdio.h>intmain(){intx=0;intarr[]={1,2,3,4,5,6,7,8,9,10};intmax=sizeof(arr)/sizeof(arr[0]);intright=max-1;intleft=0;......
  • Understand C++ vtable from assembly code
    UnderstandC++vtablefromassemblycode(part1)AglanceatvtableimplementationPostedonMay30,2020tl;drForsimplicity,part1onlydiscus......
  • Python的max()函数输出为nan值
    Python的自带函数max()在使用时,若输入的数组中是以nan为开头的就会造成输出结果也为nan,其原因可能是在比较最大值时从第一个数开始比较,若第一个数即为nan则会导致之后的所......
  • Windbg: going from vftable to c++ class
    Windbg:goingfromvftabletoc++class Aspartofanassignment,IamdelvingintotheworldofInternetExplorer,andamtryingtofigureoutexact......
  • python 函数缓存 (Function caching)
    函数缓存允许我们将一个函数对于给定参数的返回值缓存起来。当一个I/O密集的函数被频繁使用相同的参数调用的时候,函数缓存可以节约时间。在Python3.2版本以前我们只有写一......
  • C++中双冒号::的作用浅析
    C++中经常使用的作用符::,作用如下:(一)作用域限定符。在类体内申明函数,并在类体外定义函数时,必须在定义函数时加上类名和作用域限定符。classMyClass{public:int......
  • stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
    文章目录​​一、STM32串口常用寄存器和库函数​​​​1.1常用的串口寄存器​​​​1.2串口相关的库函数​​​​1.3状态寄存器(USART_SR)​​​​1.4数据寄存器(USART_D......
  • 类成员函数的重载、覆盖和隐藏区别
    类成员函数的重载、覆盖和隐藏区别?答案:a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。b.覆盖是指派生类函数覆盖基类函......
  • 2023.2.26【模板】扩展Lucas定理
    2023.2.26【模板】扩展Lucas定理题目概述求\(\binom{n}{m}mod\)\(p\)的值,不保证\(p\)为质数算法流程(扩展和普通算法毫无关系)由于\(p\)不是质数,我们考虑[SDOI201......