C++ Template

  • 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。
  • 比如 vector < int > 或 vector < string >

函数模板

  • 模板函数定义的一般形式如下所示
template <class type> ret-type func-name(parameter list)
{// 函数的主体
}
  • sample
#include <iostream>
#include <string>using namespace std;template <typename T>
inline T const& Max (T const& a, T const& b)
{ return a < b ? b:a;
}
int main ()
{int i = 39;int j = 20;cout << "Max(i, j): " << Max(i, j) << endl; double f1 = 13.5; double f2 = 20.7; cout << "Max(f1, f2): " << Max(f1, f2) << endl; string s1 = "Hello"; string s2 = "World"; cout << "Max(s1, s2): " << Max(s1, s2) << endl; return 0;
}

类模板

  • 泛型类声明的一般形式如下所示:
template <class type> class class-name {
.
.
.
}
  • sample
#include <iostream>
#include <vector>
#include <cstdlib>
#include <string>
#include <stdexcept>using namespace std;template <class T>
class Stack { private: vector<T> elems;     // 元素 public: void push(T const&);  // 入栈void pop();               // 出栈T top() const;            // 返回栈顶元素bool empty() const{       // 如果为空则返回真。return elems.empty(); }
}; template <class T>
void Stack<T>::push (T const& elem)
{ // 追加传入元素的副本elems.push_back(elem);
} template <class T>
void Stack<T>::pop ()
{ if (elems.empty()) { throw out_of_range("Stack<>::pop(): empty stack"); }// 删除最后一个元素elems.pop_back();
} template <class T>
T Stack<T>::top () const
{ if (elems.empty()) { throw out_of_range("Stack<>::top(): empty stack"); }// 返回最后一个元素的副本 return elems.back();
} int main()
{ try { Stack<int>         intStack;  // int 类型的栈 Stack<string> stringStack;    // string 类型的栈 // 操作 int 类型的栈 intStack.push(7); cout << intStack.top() <<endl; // 操作 string 类型的栈 stringStack.push("hello"); cout << stringStack.top() << std::endl; stringStack.pop(); stringStack.pop(); } catch (exception const& ex) { cerr << "Exception: " << ex.what() <<endl; return -1;}
}

Note

  • 每个函数模板前都应定义一个模板类型

转载于:https://www.cnblogs.com/coder-tcm/p/11398320.html

C++ Template 使用简介相关推荐

  1. [Go] Template 使用简介

    Golang 提供了两个标准库用来处理模板 text/template 和 html/template.我们使用 html/template 格式化 html 字符. 模板引擎 模板引擎很多,Pyth ...

  2. [vue] 说说你对选项el,template,render的理解

    [vue] 说说你对选项el,template,render的理解 el: 把当前实例挂载在元素上 template: 实例模版, 可以是.vue中的template, 也可以是template选项, ...

  3. [vue]vue渲染模板时怎么保留模板中的HTML注释呢?

    [vue]vue渲染模板时怎么保留模板中的HTML注释呢? <template comments>... </template> 个人简介 我是歌谣,欢迎和大家一起交流前后端知 ...

  4. [vue-element] ElementUI表格组件如何实现动态表头?

    [vue-element] ElementUI表格组件如何实现动态表头? <template v-for="item in tableColownms"> <el ...

  5. Docker+Consul+Registrator实现服务注册与发现

    逻辑图 实现nginx节点自动化加入容器IP代理 1.部署三台Consu集群然后通过Consul Template实时监测Leader的变化. 2.Leader如果变化就触发渲染模板动作,执行相应命令 ...

  6. python3自动化软件发布系统_Python 3自动化软件发布系统 -Django 2实战

    第1章 Python基础 1.1 Python基本数据类型的常用操作 1.1.1 数字(Number)--人生不能只会做减法 1.1.2 字符串(String)--一入编码深似海 1.1.3 列表(L ...

  7. Java学习笔记之JDBC

    JDBC 穷且益坚 不坠青云之志 文章目录 JDBC 一.概念 1. 简介 二.入门 1. 步骤 2. 代码 三.详解 1. 各个对象 2. 详解 2.1 DriverManager 2.2 Conn ...

  8. Redis简介和Redis Template用法整理

    Redis简介 Redis使大规模互联网应用常用的内存高速缓存数据库,它的读写速度非常快.Redis是目前使用最广泛的内存数据存储系统之一.它支持更丰富的数据结构,支持数据持久化.事务.HA(高可用H ...

  9. NiFi 模板(Template)简介

    模板使用 当我们使用处理器(Processor) 在 NiFi 中设计复杂的数据流处理流程时, 我们经常会发现, 我们将相同的处理器序列串在一起以执行某些任务.这种情况下, NiFi 提供了模板的概念 ...

最新文章

  1. batch size 越大,学习率也要越大
  2. C++中对String的各种操作
  3. Fragment生命周期与Fragment执行hide、show后的生命周期探讨
  4. Unity3D_(游戏)控制物体的上、下、左、右移动
  5. 信息学奥赛一本通(1090:含k个3的数)
  6. 53 MM配置-评估和科目设置-定义评估控制
  7. Spring Boot : Spring boot 的 AutoConfigurationImportSelector 自动配置原理
  8. oracle12c时间,Oracle 12c-选择冒号后的日期时间字符串
  9. 2. 怎么根据nagios报警做出调整的
  10. webAppbuilder微件使用教程1 快速入门
  11. element 表格数据过多时 进行鼠标移上去展示全部
  12. matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏
  13. 【转载】电磁波中的波段划分:L波段、S波段、C波段、X波段、Ku波段、K波段、Ka波段 等等
  14. NLP-信息抽取-三元组-联合抽取-多任务学习-2019:CasRel【关系三元组抽取:一种新的级联二元标注框架】【没用CRF】【基于Lic2019比赛】【数据集:NYT、WebNLG】
  15. C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )
  16. 2022版u-boot启动分析笔记之一(start.S与lowlevel_init.S)
  17. 微信号名称乱码什么情况_微信号可以改了但却不知道改什么?
  18. 一小时搭建实时数据分析平台
  19. FastSpeech2论文中文翻译
  20. 学完C再学C++(6)继承类

热门文章

  1. 动态修改css 规则
  2. Saruman's Army (POJ 3069)
  3. [POJ 1273]Drainage Ditches
  4. OAuth2.0官方文档中文翻译
  5. Asp.net高效导出excel篇之Aspose导出excel
  6. 通过资源名称得到资源id
  7. 截短 UTF-8 字符串
  8. 基于源码剖析nodejs模块系统
  9. JavaScript学习(三十五)—拖动元素
  10. 计算机图形学 实现鼠标拖拽图元