模板的模板参数

  • Post author:
  • Post category:其他


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的定义我们可以知道,程序员如果要替换缺省的内部容器的话,必须两次指定元素的类型&



版权声明:本文为AlgoThinking原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。