没有合适的资源?快使用搜索试试~ 我知道了~
C++模板template用法小结(推荐)
3 下载量 80 浏览量
2020-12-20
18:42:24
上传
评论
收藏 72KB PDF 举报
温馨提示
试读
6页
引言 模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。 函数模板 在c++入门中,很多人会接触swap(int&, int&)这样的函数类似代码如下: void swap(int&a , int& b) { int temp = a; a = b; b = temp; } 但是如果是要支持long,string,自定义class的swap函数,代码和上述代码差不多,只是类型不同,这个时候就是我们定义swap的函数模板,就可以复用不同类型的swap函数代
资源详情
资源评论
资源推荐
C++模板模板template用法小结用法小结(推荐推荐)
引言引言
模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有
用的函数大多结合了模板的观念,如STL以及IO Stream。
函数模板函数模板
在c++入门中,很多人会接触swap(int&, int&)这样的函数类似代码如下:
void swap(int&a , int& b) {
int temp = a;
a = b;
b = temp;
}
但是如果是要支持long,string,自定义class的swap函数,代码和上述代码差不多,只是类型不同,这个时候就是我们定义swap的
函数模板,就可以复用不同类型的swap函数代码,函数模板的声明形式如下:
template <class identifier> function_declaration;
template <typename identifier> function_declaration;
swap函数模板的声明和定义代码如下:
//method.h
template<typename T> void swap(T& t1, T& t2);
#include "method.cpp"
//method.cpp
template<typename T> void swap(T& t1, T& t2) {
T tmpT;
tmpT = t1;
t1 = t2;
t2 = tmpT;
}
上述是模板的声明和定义了,那模板如何实例化呢,模板的实例化是编译器做的事情,与程序员无关,那么上述模板如何使
用呢,代码如下:
//main.cpp
#include <stdio.h>
#include "method.h"
int main() {
//模板方法
int num1 = 1, num2 = 2;
swap<int>(num1, num2);
printf("num1:%d, num2:%d", num1, num2);
return 0;
}
这里使用swap函数,必须包含swap的定义,否则编译会出错,这个和一般的函数使用不一样。所以必须在method.h文件的最
后一行加入#include "method.cpp“。
类模板类模板
考虑我们写一个简单的栈的类,这个栈可以支持int类型,long类型,string类型等等,不利用类模板,我们就要写三个以上的
stack类,其中代码基本一样,通过类模板,我们可以定义一个简单的栈模板,再根据需要实例化为int栈,long栈,string栈。
//statck.h
template <class T> class Stack {
public:
Stack();
~Stack();
void push(T t);
T pop();
bool isEmpty();
private:
T *m_pT;
int m_maxSize;
weixin_38717843
- 粉丝: 1
- 资源: 924
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0