1. 数组

template <typename T, int N>
void array_print(T (&arr)[N])
{
for(int i = 0; i < N; ++i)
{
cout << arr[i] << endl;
}
}
int arr[5] = {1, 2, 3, 4, 5};
array_print(arr); //实例成 array_print(int(&)[5])

2. 返回值

template <class T1, class T2, class T3>
T1 sum(T2 x, T3 y)
{
return x.size() + y.size();
}
size_t l = sum<size_t>(string("xx"), string("yyy"));

3. 非类型形参数

template<int w, int h>
int area()
{
return w * h;
}
int a = area<8,6>();

4. 特化

template <typename T>
int compare(const T &v1, const T &v2)
{
if(v1 < v2) return -1;
if(v2 < v1) return 1;
return 0;
} template <>
int compare<const char*>(const char* const &v1, const char* const &v2)
{
return strcmp(v1, v2);
}
const char *str1 = "hello", *str2 = "world";
int n1 = 1, n2 = 2;
compare(str1, str2);
compare(n1, n2);

5. 
缺省模板参数

template <typename T1, typename T2 = bool>
class A {
public:
A() : m_value1(), m_value2()
{
}
~A()
{ }
private:
T1 m_value1;
T2 m_value2;
};
A<int> aa;

6. traits

template <typename T>
class TypeTraits; template <>
class TypeTraits<char>{
public:
typedef int ReturnType;
}; template <>
class TypeTraits<short>{
public:
typedef int ReturnType;
}; template <>
class TypeTraits<int>{
public:
typedef int ReturnType;
}; template <>
class TypeTraits<float>{
public:
typedef double ReturnType;
}; template <typename T,typename Traits>
typename Traits::ReturnType average(T const* begin, T const* end)
{
typedef typename Traits::ReturnType ReturnType;
ReturnType total = ReturnType();
int count = 0;
while (begin != end){
total += * begin;
++begin;
++count;
}
return total / count;
}
char str[] = "i love you";
cout << average<char,TypeTraits<char> >(&str[0],&str[10]) << endl; // 看class TypeTraits<char>

参考文献:

1. <<C++ Primer>>

2. http://www.cnblogs.com/stephen-liu74/archive/2012/09/12/2639736.html

3. http://www.cppblog.com/youxia/archive/2008/08/30/60443.html

c++ template笔记的更多相关文章

  1. 面向对象程序设计-C++ Stream & Template & Exception【第十五次上课笔记】

    这是本门<面向对象程序设计>课最后一次上课,刚好上完了这本<Thinking in C++> :) 这节课首先讲了流 Stream 的概念 平时我们主要用的是(1)在屏幕上输入 ...

  2. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  3. SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven)

    SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选.检索功能(maven) 本篇是新建的一个数据库,新建的一个完整项目. 本篇内容: (1)使用 Spri ...

  4. angular学习笔记(三十)-指令(2)-restrice,replace,template

    本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...

  5. Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

    f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  6. Django学习笔记(二):使用Template让HTML、CSS参与网页建立

    Django学习笔记(二):使用Template让HTML.CSS参与网页建立 通过本文章实现: 了解Django中Template的使用 让HTML.CSS等参与网页建立 利用静态文件应用网页样式 ...

  7. 运维开发笔记整理-template的使用

    运维开发笔记整理-Django的template的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在上一篇博客中我们学习了HttpResponse 和JsonResponse方 ...

  8. Django笔记&教程 3-1 模板(Template)基础

    Django 自学笔记兼学习教程第3章第1节--模板(Template)基础 点击查看教程总目录 1 介绍 模板文件:让Django能够自动生成html代码 作为一个web框架,Django需要需要在 ...

  9. tornado 学习笔记9 Tornado web 框架---模板(template)功能分析

            Tornado模板系统是将模板编译成Python代码.         最基本的使用方式: t = template.Template("<html>{{ myv ...

随机推荐

  1. SASS、COMPASS 安装指南

    如果你还不知道 SASS 和 COMPASS 是什么,可以参看http://sass-lang.com 和http://compass-style.org,近期可能会更新一篇介绍性的入门教程,但 是本 ...

  2. Javascript实现打字效果

    伤感的 学期末 今天是这学期的最后一天,考完了最后一门数学,明天我们就要各自为自己的暑假打算打算了,所以趁着大家还没走一起出去打了打篮球,玩了玩轮滑,很累但是很开心,最大的感触莫过于忧伤额,明年我或许 ...

  3. unity 基础之PhysicsManager

    原地址:http://www.cnblogs.com/alongu3d/p/3644725.html @by  广州小龙 1.Gravity(重力) 物理系统都是根据实际情况进行模拟的,由于Y值是往下 ...

  4. php截取小时和分钟,在进行和其它时间段的比较

    用php截取时间的小时和分钟,然后判断这个时间是不是在 8:00到11:30之间,用php应该怎么写? date_default_timezone_set("Asia/Shanghai&qu ...

  5. cocos2d-x mac or windows eclipse android ------ Eclipse工程里面还会有许多警告

    由于公司的游戏项目比较特殊,  coco2d-x 的  ios  和  android  的游戏 代码 没有采用 共享目录的开发方式.所以android 内的 c++ 游戏代码全部放在 jni 下, ...

  6. ANDROID_MARS学习笔记_S02_010_Animation_动画效果

    一.流程 1.把要实现动画的一系列图片复制到res/drawable文件夹 2.在此文件新建一个xml文件用来组织图片 3.在mainactivity中用imageView.setBackground ...

  7. ANDROID_MARS学习笔记_S01原始版_022_MP3PLAYER002_本地及remote标签

    一.简介 1.在main.xml中用TabHost.TabWidget.FrameLayout标签作布局 2.在MainActivity中生成TabHost.TabSpec,调用setIndicato ...

  8. 捉虫记:SHGetSpecialFolderPath返回错误码为2

    通常我们想获得系统的一些路径时,都会使用一些Shell函数.比如SHGetSpecialFolderPath,SHGetFolderPath,SHGetKnownFolderPath等,传入我们想要的 ...

  9. 函数page_rec_get_next_const

    /************************************************************//** Gets the pointer to the next recor ...

  10. 如何将磁盘从GPT格式转换成MBR

      GPT转MBR分区怎么转?现在很多笔记本的硬盘分区都是GPT模式,如果想装XP的话,那只能将GPT磁盘转换成MBR磁盘分区才行.接下来,简单说说如何将GPT分区转成 MBR分区! 如果本身电脑有两 ...