【发布时间】:2011-07-27 03:20:53
【问题描述】:
我正在努力巩固我对模板模板参数的理解。在C++ Templates the Complete Guide(Vandervoorde,Josuttis)中,他们在第 52 页有一个示例,我想使用如下图所示:
(我也在尝试学习如何在 stackoverflow 上使用 Picasa 中的图像,所以如果上述方法不起作用,这里有一个稍微详细一点的版本)
书中的原始代码
template <typename T,
template <typename ELEM, typename ALLOC=std::allocator<ELEM> > class CONT=std::vector>
class Stack
{
private:
CONT<T > elems; //Why doesn't CONT<T, ALLOC> elems; compile?
};
不向您展示如何将其用于不同的分配器。他们确实将不同的容器显示为:
Stack<int, std::deque> my_deque_stack;
我天真地尝试过:
Stack<int, std::deque<int, std::allocator<int> > > my_deque_int_stack;
我也尝试在私有部分将 CONT 定义为
CONT<T, ALLOC>
但这也会产生编译器错误。我想知道在我想使用双端队列但想指定不同的分配器的地方使用 Stack 模板的正确语法是什么。我在这里阅读了一些类似的帖子,这些帖子表明在周围撒了类型名或模板限定符,我尝试了几个但似乎找不到神奇的公式。
【问题讨论】:
标签: c++ templates parameters