模板的模板参数

本文介绍了C++中的模板模板参数,重点讲述了如何在STL的stack类模板中使用这一特性。通过示例展示了如何仅指定容器类型而不指定元素类型,讨论了与STL容器的默认模板参数匹配的问题,以及在不同STL版本中的不兼容性。同时提到了模板模板参数的匹配要求和在函数模板中的不可用性。
摘要由CSDN通过智能技术生成

1、概念

         模板的模板参数(template template parameters),这个名字有点长,首先要理解什么是模板的模板参数。需要知道的是函数模板是不支持模板的模板参数的,所以这儿所指的模板的模板参数就是类模板的模板参数,即对一个类模板,它的模板参数本身也是一个模板,更确切地说是一个类模板。

2、例子

         为了说明怎样使用模板的模板参数,以STL中的容器适配器stack为例较为恰当。下面是SGI-STL stack的部分源码:

template<typename T, typename Sequence = deque<T> >
class stack
{
protected:
         Sequence c;
//…
};

         从源码可以看出来,stack的默认容器是deque,一般可以满足用户的需求,用户也可以另外指定容器。如指定vector作为stack的底层容器, 定义如下:

         stack<int,std::vector<int> > s;        //别忘了”#include<stack>”和 “#include <vector>”

stack类模板的第二个模板参数是一个类型,在这儿我们指定为vector<int>,从stack的定义我们可以知道,程序员如果要替换缺省的内部容器的话,必须两次指定元素的类型&

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值