C++ 函数模板
来源:互联网 发布:sql数据库查询工具 编辑:程序博客网 时间:2024/05/16 18:00
什么是模板函数:通过函数模板生成的函数。
什么是函数模板:一组定义好的具有和函数类似的结构单元,这类结构单元将变量的类型视为变量,同时该结构定义了一组适用于多种类型的相同的算法逻辑。这类结构类似于函数,但是它们其实一些临时的结果,它们并不存在于最终的二进制文件中。
为什么要模板函数:
假设我们有一个函数:
void swap(int & a,int &b){int temp=a;a=b;b=temp;}
它接受 两个int作为参数,并交换这两个参数的值。
那么如果我们想要为double也写这么一个函数呢?
我们可以会这个样子:
将上面的代码copy下来,然后使用字符串替换的方法 把这个函数里面所有的int都换成 double,这个步骤结果就类似于下面这样子:
void swap(double & a,double &b){int temp=a;a=b;b=temp;}
好像没有上面毛病,那如果我们想让char也可以互换呢?
我们还是把源代码copy过来,无脑替换一下:
void swap(char & a,char &b){int temp=a;a=b;b=temp;}
····
上面的做法也是一种解决问题的方法,但是这种方法有一定的弊端:
1.频繁的复制原函数,然后无脑替换容易出错,例如:
原函数是这个样子:
void func(int & a){···short int b···}
把int 无脑替换成 double:void func(double & a){···short double b···}
GG
2.当函数内部逻辑需要修改时,需要对每一个函数都进行相同的修改,这样的工作量大,且容易遗漏。
例如 如果想把swap里面的代码更新一下,则很可能需要把int版本的、char版本的、double版本的都更新一遍 ···没准还要遗漏一两个呢。
于是聪明的人类在总结上述函数的特点,发现这些函数只是参数的类型不同,但是内部的执行逻辑是一样的,,,,所以能不能做到让这些不同的参数的函数共享一套内部逻辑呢?能不能把参数的类型也当做一种变量来嘞?
这种思想就是 类型参数化 (parameterized types) 的核心。
怎么做嘞:
为了使用模板函数,首先需要定义函数模板:
一般形式为:
template < typename T…>
return_type function_name( parameter-list)
{
···
}
- 【c/c++】函数模板和模板函数
- C/C++ 函数模板
- c++:函数模板
- 【C++】函数模板
- 【c++】函数模板
- C语言函数模板
- C++:函数模板
- 【C++】模板函数总结!!!
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- 学习C++模板---模板函数
- Linux C/C++ 模板:函数模板
- C++,template,类模板和函数模板
- C++:函数模板、类模板及其特化
- C++---函数模板与类模板
- C++_函数模板基础知识
- C语言实现函数模板
- C++_函数模板基础知识
- Unity 中生成JSON以及对应的解析方法
- 面试题49:把字符串转换成整数
- 图像二值化 cv2.threshold
- Linux : 给硬盘分区
- 关于xgboost安装在anaconda上面(python3.6,64位,windows10)
- C++ 函数模板
- 0day安全——第四章小实验学习笔记
- 欢迎使用CSDN-markdown编辑器
- js实现点击切换checkbox背景图片
- redis安装-主从-哨兵模式
- log4j.properties配置文件
- 如何将同一 VNET 下的虚拟机从经典部署模型迁移到 Azure Resource Manager
- java笔试题一
- Instance-Aware图像语义分割CVPR2017