C++ Templates 学习历程一

一、定义max函数模板

//basics/mas.hpp
temeplate<typename T>
inline T const& max (T const& a, T const&  b)
{
    return a < b ? b : a;
}

模板参数的声明

template <comma-separated-list-of-paramaters>
//temeplate<参数列表,用逗号隔开>

模板max()的另一种等价定义

temeplate <class T>
inline T const& max (T const& a, T const&  b)
{
    return a < b ? b : a;
}

使用模板

//basics/max.cpp
#include<iostream>
#include<string>
#include"max.hpp"

int main()
{
   int i = 42;
   std::cout<<"max( 7,i ) : "<<::max( 7, i )<<std::endl;  

  double f1 = 3.4;
  double f2 = -6.7;
  std::cout<<"max( f1,f2 ) : "<<::max( f1, f2 )<<std::endl;  

  string s1="mathmatics";
  string s2="math";
  std::cout<<"max( s1,s2 ) : "<<::max( s1, s2 )<<std::endl;
}

max()模板每次调用前面都有域限定符 :: ,是为了确认调用的是全局名字空间中的max()。

用具体类型代替模板参数叫做实例化。它产生了一个模板的实例,即:

max()的第一次调用为int实例化了max模板,就像具有如下单独的声明和实现一样

const int& max( int const&, int const&);
时间: 2024-10-23 17:57:58

C++ Templates 学习历程一的相关文章

Amaze UI学习笔记——JS学习历程一

1.自定义事件 (1)一些组件提供了自定义事件,命名方式为{事件名称}.{组件名称}.amui,用户可以查看组件文档了解.使用这些事件,如: $('#myAlert').on('close.alert.amui',function(){ //do something; }); (2)data-am-observe 在元素上添加data-am-abserve属性以后,动态插入改元素的Amaze UI JS插件会自动初始化,支持的插件包括Button.Dropdown.Slider.Popover.

redis学习教程一《Redis的安装和配置》

redis学习教程一<Redis的安装和配置> Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等.这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果

php学习过程一

现在是搞.net的,以前也接触过php,还买过一个微信开发的php源码,不过后然就放弃没弄了. 现在想想还是再学习学习一下吧 第一篇还是先讲讲php环境搭建吧 我用的是php集成环境phpstudy,这样apache,mysql就直接省事了 这个我一直也没弄不明白怎么去设置不同端口的web网站,在域名管理里面新建了域名和端口,但是无法访问这个端口, 我只能把网站复制到phpstudy默认网站的根目录下面,再访问我的web. 早上研究了一下phpstudy的学习手册,其中的:”IIS7/8快速安装

jquery核心的学习进程一

<html><head><title>jquery_core</title><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script>//var $=jQuery();console.log("返回一个空的jquery对象:"+jQuery());var aa=$(&quo

python学习过程一

python在window和Linux区别.在window下无法多进程.Linux下可以. python种类有很多.cpython(官方,由C语言写的),jython.Ironyhon....比如jython是由JAVA编译,编译相应的字节码.语言都是python的格式.只是解释器(虚拟机)不一样. python解释流程默认按照ASCII码读取代码.易造成读取失败. unicode至少2个字节表示能表示中文,不能从硬盘读取.utf-8至少1个字节表示,节省空间,对字符进行分类,能够从硬盘读取.中

无限互联学习进程一

无限互联奖学金连载一!(北京校区 徐国安 54班) 天苍苍野茫茫我是一头来自南方的狼!励志要在北京高薪就业得表扬.于是我来到了我实现梦想的舞台实现屌丝逆袭迎娶白富美的奇迹从此走上的人生的巅峰!----无限互联!刚到这里映入我眼角的是我小小的寝室!烂掉的洗漱池!破破烂烂的床铺!污染的空气交杂着粉尘!知道了北漂的生活!知道了我不是来享福的!知道了作为一个男人就应该要刚要爷们要坚强要担当要奋斗要事业!想要的一切!都得要看自己的努力! 在这里幸运的我遇到凝聚力强创新能力高态度友善的无限互联大家庭!其中最

一文读懂机器学习,大数据/自然语言处理/算法全有了……

原文地址 http://www.open-open.com/lib/view/open1420615208000.html http://www.cnblogs.com/subconscious/p/4107357.html 引论 在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便全然不了解机器学习的人也能了解机器学习.而且上手相关的实践.这篇文档也算是 EasyPR开发的番外篇.从这里開始.必须对机器学习了解才干进一步介绍EasyPR的内核.当然,本文也面对一般读者.不会对阅读有

漫谈 机器学习

http://www.open-open.com/lib/view/open1420615208000.html 作者:计算机的潜意识 在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践.这篇文档也算是 EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核.当然,本文也面对一般读者,不会对阅读有相关的前提要求. 在进入正题前,我想读者心中可能会有一个疑惑:机器学习有什么重要性,以至于要阅读

Tomcat 学习进阶历程之Tomcat架构与核心类分析

前面的http及socket两部分内容,主要是为了后面看Tomcat源码而学习的一些网络基础.从这章开始,就开始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源码之前,准备先看一下Tomcat的架构与一些核心类的简单分析,并简单介绍一下Tomcat是如何处理一次Http请求的.这部分内容有相当一部分来源于网络,在此,感谢原作者的贡献. Tomcat的总体架构 Tomcat的架构关系可以从Tomcat的配置文件server.xml中看到端倪. 从上图中可以看出Tomcat 的心脏