1. 数组

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

2. 返回值

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

3. 非类型形参数

  1. template<int w, int h>
  2. int area()
  3. {
  4. return w * h;
  5. }
  1. int a = area<8,6>();

4. 特化

  1. template <typename T>
  2. int compare(const T &v1, const T &v2)
  3. {
  4. if(v1 < v2) return -1;
  5. if(v2 < v1) return 1;
  6. return 0;
  7. }
  8.  
  9. template <>
  10. int compare<const char*>(const char* const &v1, const char* const &v2)
  11. {
  12. return strcmp(v1, v2);
  13. }
  1. const char *str1 = "hello", *str2 = "world";
  2. int n1 = 1, n2 = 2;
  3. compare(str1, str2);
  4. compare(n1, n2);

5. 
缺省模板参数

  1. template <typename T1, typename T2 = bool>
  2. class A {
  3. public:
  4. A() : m_value1(), m_value2()
  5. {
  6. }
  7. ~A()
  8. {
  9.  
  10. }
  11. private:
  12. T1 m_value1;
  13. T2 m_value2;
  14. };
  1. A<int> aa;

6. traits

  1. template <typename T>
  2. class TypeTraits;
  3.  
  4. template <>
  5. class TypeTraits<char>{
  6. public:
  7. typedef int ReturnType;
  8. };
  9.  
  10. template <>
  11. class TypeTraits<short>{
  12. public:
  13. typedef int ReturnType;
  14. };
  15.  
  16. template <>
  17. class TypeTraits<int>{
  18. public:
  19. typedef int ReturnType;
  20. };
  21.  
  22. template <>
  23. class TypeTraits<float>{
  24. public:
  25. typedef double ReturnType;
  26. };
  27.  
  28. template <typename T,typename Traits>
  29. typename Traits::ReturnType average(T const* begin, T const* end)
  30. {
  31. typedef typename Traits::ReturnType ReturnType;
  32. ReturnType total = ReturnType();
  33. int count = 0;
  34. while (begin != end){
  35. total += * begin;
  36. ++begin;
  37. ++count;
  38. }
  39. return total / count;
  40. }
  1. char str[] = "i love you";
  2. 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. 当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?

    最近在学习highcharts时,关于其中的导出功能,本来是想把导出的图片存放在本地,发现只有在电脑联网的情况下才可以一下导出图片,后来查阅了一番资料,才发现highcharts中的导出默认的官网服务 ...

  2. javascript中部分不能使用call apply调用来重写的构造函数

      This tests if TypeError is thrown or not when we call a constructor as a normal function.       On ...

  3. tomcat+apache 实现负载均衡之一:同一台电脑部署2个以上tomcat

    1.  下载tomcat 8.0.17 http://apache.fayea.com/tomcat/tomcat-8/v8.0.17/bin/apache-tomcat-8.0.17.tar.gz ...

  4. 织梦dede_archives文章主表详细介绍

    dede_archives文章主表,存放着各频道文章的主要信息,比如创建时间,所属栏目,所属频道,作者等详细的信息.     ID int(11) 自动编号typeid int(11) 所属主栏目编号 ...

  5. 执行config文件时,config.log中报错xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist, use xcode-select to change

    执行 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer 即可解决.

  6. 【无聊放个模板系列】POJ2752 EXKMP

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  7. activity的测试工程activiti-explorer使用

    1. activiti-explorer默认使用h2数据库,第一步要修改db.properties的配置,如果使用其他数据库的话,务必放入驱动包,oracle的ojdbc4不能用,会报错,要使用版本高 ...

  8. Linux使用wake_up_interruptible()唤醒注册到等待队列上的进程

    http://blog.sina.com.cn/s/blog_4770ef020101h48l.html     功能:唤醒注册到等待队列上的进程 原型:     #include     void ...

  9. 关于checkbox的checked属性和change事件

    jquery中的attr和prop有什么区别? To retrieve and change DOM properties such as the checked, selected, or disa ...

  10. MySQL 线上配置文件

    [client] port            = 3306 socket          = /tmp/mysql.sock default-character-set = utf8 [mysq ...