C++11程序设计要点总结-模板机制详解
C++程序设计要点总结
在编程的过程中呢我们总会遇到一些各种各样的问题,就比如在写方法的时候,我们一个同样的方法要写好几种类型的呢,这让我们很伤脑筋,但是呢C++有一个强大的功能就是模板机制,这个模板机制就可以让我们少写很多同样的代码,那么什么是模板呢,。我们举一个小例子吧!比如我们要去写交换函数,那么我们正常的写法是
void swap(int&a,int&b)
{
int temp=a;
a=b;
b=temp;
}
这样写大家都可以看懂,但是却有一个问题,我们现在写的只是交换int类型的值那么这样写很简单么,那么我们如果要交换一个double类型的值呢,我们在写一个double类型的swap函数么。
void swap(double&a,double&b)
{
double temp=a;
a=b;
b=temp;
}
这样写的话太麻烦了,如果我在想交换一个float类型的呢,char类型的呢,难道我要一个一个定义么,这个时候我们模板的作用就体现出来了。
既然要讲模板那么我们首先讲的是模板怎么定义模板的定义其实很简单,就像变量的定义方法一样,但是和变量不同的是他是在<中定义的>废话不多说我们来看看案例吧!
.template<typename name> //这是第一种的定义方法
.template<class name> //这是第二种的定义方法
那么上面这两种有什么区别呢,我给你们简单的概括一下,这里面的class是可以变成任何类型,就比如说我们自己定义的类结构体共同体等等等等,typename就是基本数据类型,那么什么是基本数据类型呢,就是我们的int,char,string既然讲到这里了,那么我们写一个案例吧!
template<typename type>
void swap(type&a,type&b)
{
type temp=a;
a=b;
b=temp;
}
既然讲完了定义那么定义后的这个方法怎么使用呢,其实使用起来也是很简单的,和正常函数一样传参就好了,他会自己去匹配
int a = , b = ;
swap(a,b);
cout << a << "\t"<<b << endl;
ps:使用必看
1.如果只有一个像上面的type那个swap一样的话那么你要注意一点,就是a和b的类型必须一样,不然他不知道识别什么。
2.使用模板的时候我们并不是一成不变的只能定义一个,其实我们可以像定义变量一样的定义它,使用逗号隔开即可。
C++11程序设计要点总结-模板机制详解的更多相关文章
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...
- C++11 并发指南六( <atomic> 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- 【转】Eclipse Java注释模板设置详解
Eclipse Java注释模板设置详解 设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后 ...
- 【转】Cookie/Session机制详解
Cookie/Session机制详解 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...
- 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图
1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...
- java 深拷贝与浅拷贝机制详解
概要: 在Java中,拷贝分为深拷贝和浅拷贝两种.java在公共超类Object中实现了一种叫做clone的方法,这种方法clone出来的新对象为浅拷贝,而通过自己定义的clone方法为深拷贝. (一 ...
- 从mixin到new和prototype:Javascript原型机制详解
从mixin到new和prototype:Javascript原型机制详解 这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...
- 浏览器 HTTP 协议缓存机制详解
最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag, ...
- JVM的垃圾回收机制详解和调优
JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都 ...
随机推荐
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
- CF1060E Sergey and Subway(点分治)
给出一颗$N$个节点的树,现在我们**在原图中**每个不直接连边但是中间只间隔一个点的两个点之间连一条边. 比如**在原图中**$u$与$v$连边,$v$与$w$连边,但是$u$与$w$不连边,这时候 ...
- MAC下如何配置Android手机调试(将测试手机加入到Mac系统的调试列表中)
第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType 可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): 查看到我的Andr ...
- 纯javaScript实现元素平滑滚动,改进前两个版本,支持鼠标滚轮滚动和点击元素滚动,滚动更顺畅
windowScroll(id, number, distance, direction, obj) 参数介绍: 1.id:所要滚动的元素id; 2.number:滚动次数; 3.distance:每 ...
- 51Nod 1013 3的幂的和(快速幂+逆元)
#include <iostream> #include <algorithm> #include <string> #define MOD 1000000007 ...
- 1-10super和this关键字
什么是super? super代表的是当前子类对象中的父类型特征. 什么时候使用super? 子类和父类中都有某个数据,例如,子类和父类中都有name这个属性.如果要再子类中访问父类中的name属性, ...
- Linux遗忘命令
1.查找文件的安装目录,拿nginx来说 find /|grep nginx.conf 2. a.查询某个端口是否被占用,如8080端口 netstat –apn | grep 8080 b.查看 ...
- 前端之HTML样式
<!doctype html> h5的文档声明 <html> 网页的根标签(根元素 html)--所有的代码都放置在此内 <head> <meta chars ...
- CF983A Finite or not?
思路: 如果p,q不互质,先把q除以p,q的最大公约数.接下来只要b中包含了所有q的质因子就可以了.可以在gcd(q, b) 不等于1的时候不断地用q除以gcd(q, b).最后如果q等于1,说明Fi ...
- CF758C Unfair Poll
题意: On the Literature lesson Sergei noticed an awful injustice, it seems that some students are aske ...