C++ Template 使用简介
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 使用简介相关推荐
- [Go] Template 使用简介
Golang 提供了两个标准库用来处理模板 text/template 和 html/template.我们使用 html/template 格式化 html 字符. 模板引擎 模板引擎很多,Pyth ...
- [vue] 说说你对选项el,template,render的理解
[vue] 说说你对选项el,template,render的理解 el: 把当前实例挂载在元素上 template: 实例模版, 可以是.vue中的template, 也可以是template选项, ...
- [vue]vue渲染模板时怎么保留模板中的HTML注释呢?
[vue]vue渲染模板时怎么保留模板中的HTML注释呢? <template comments>... </template> 个人简介 我是歌谣,欢迎和大家一起交流前后端知 ...
- [vue-element] ElementUI表格组件如何实现动态表头?
[vue-element] ElementUI表格组件如何实现动态表头? <template v-for="item in tableColownms"> <el ...
- Docker+Consul+Registrator实现服务注册与发现
逻辑图 实现nginx节点自动化加入容器IP代理 1.部署三台Consu集群然后通过Consul Template实时监测Leader的变化. 2.Leader如果变化就触发渲染模板动作,执行相应命令 ...
- python3自动化软件发布系统_Python 3自动化软件发布系统 -Django 2实战
第1章 Python基础 1.1 Python基本数据类型的常用操作 1.1.1 数字(Number)--人生不能只会做减法 1.1.2 字符串(String)--一入编码深似海 1.1.3 列表(L ...
- Java学习笔记之JDBC
JDBC 穷且益坚 不坠青云之志 文章目录 JDBC 一.概念 1. 简介 二.入门 1. 步骤 2. 代码 三.详解 1. 各个对象 2. 详解 2.1 DriverManager 2.2 Conn ...
- Redis简介和Redis Template用法整理
Redis简介 Redis使大规模互联网应用常用的内存高速缓存数据库,它的读写速度非常快.Redis是目前使用最广泛的内存数据存储系统之一.它支持更丰富的数据结构,支持数据持久化.事务.HA(高可用H ...
- NiFi 模板(Template)简介
模板使用 当我们使用处理器(Processor) 在 NiFi 中设计复杂的数据流处理流程时, 我们经常会发现, 我们将相同的处理器序列串在一起以执行某些任务.这种情况下, NiFi 提供了模板的概念 ...
最新文章
- batch size 越大,学习率也要越大
- C++中对String的各种操作
- Fragment生命周期与Fragment执行hide、show后的生命周期探讨
- Unity3D_(游戏)控制物体的上、下、左、右移动
- 信息学奥赛一本通(1090:含k个3的数)
- 53 MM配置-评估和科目设置-定义评估控制
- Spring Boot : Spring boot 的 AutoConfigurationImportSelector 自动配置原理
- oracle12c时间,Oracle 12c-选择冒号后的日期时间字符串
- 2. 怎么根据nagios报警做出调整的
- webAppbuilder微件使用教程1 快速入门
- element 表格数据过多时 进行鼠标移上去展示全部
- matlab怎么求rmse_从零开始的matlab学习笔记——(33)绘图工具栏
- 【转载】电磁波中的波段划分:L波段、S波段、C波段、X波段、Ku波段、K波段、Ka波段 等等
- NLP-信息抽取-三元组-联合抽取-多任务学习-2019:CasRel【关系三元组抽取:一种新的级联二元标注框架】【没用CRF】【基于Lic2019比赛】【数据集:NYT、WebNLG】
- C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )
- 2022版u-boot启动分析笔记之一(start.S与lowlevel_init.S)
- 微信号名称乱码什么情况_微信号可以改了但却不知道改什么?
- 一小时搭建实时数据分析平台
- FastSpeech2论文中文翻译
- 学完C再学C++(6)继承类