c语言中的std模版用法,C++模板template用法小结(推荐)

本文详细介绍了C++中的模板使用,包括函数模板、类模板、模板参数、模板专门化以及模板类型转换。通过示例展示了如何创建和使用模板,以实现泛型编程,提高代码复用效率。
摘要由CSDN通过智能技术生成

引言

模板(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 function_declaration;

template function_declaration;

swap函数模板的声明和定义代码如下:

//method.h

template void swap(T& t1, T& t2);

#include "method.cpp"

//method.cpp

template void swap(T& t1, T& t2) {

T tmpT;

tmpT = t1;

t1 = t2;

t2 = tmpT;

}

上述是模板的声明和定义了,那模板如何实例化呢,模板的实例化是编译器做的事情,与程序员无关,那么上述模板如何使用呢,代码如下:

//main.cpp

#include

#include "method.h"

int main() {

//模板方法

int num1 = 1, num2 = 2;

swap(num1, num2);

printf("num1:%d, num2:%d\n", num1, num2);

return 0;

}

这里使用swap函数,必须包含swap的定义,否则编译会出错,这个和一般的函数使用不一样。所以必须在method.h文件的最后一行加入#include "method.cpp"。

类模板

考虑我们写一个简单的栈的类,这个栈可以支持int类型,long类型,string类型等等,不利用类模板,我们就要写三个以上的stack类,其中代码基本一样,通过类模板,我们可以定义一个简单的栈模板,再根据需要实例化为int栈,long栈,string栈。

//statck.h

template class Stack {

public:

Stack();

~Stack();

void push(T t);

T pop();

bool isEmpty();

private:

T *m_pT;

int m_maxSize;

int m_size;

};

#include "stack.cpp"

//stack.cpp

template Stack::Stack(){

m_maxSize = 100;

m_size = 0;

m_pT = new T[m_maxSize];

}

template Stack::~Stack() {

delete [] m_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值