gpt4 book ai didi

c++ - 你能帮我理解这个 C++ 模板代码吗?

转载 作者:行者123 更新时间:2023-11-28 03:50:45 25 4
gpt4 key购买 nike

你好,

谁能告诉我这个东西是如何工作的?

template <typename T,
template <typename ELEM> class CONT = std::deque >
class Stack {
private:
CONT<T> elems; // elements

public:
void push(T const&); // push element
void pop(); // pop element
T top() const; // return top element
bool empty() const { // return whether the stack is empty
return elems.empty();
}
};

我不明白的是:模板类 V 或者说这个“模板类 CONT = std::deque”

我把它想象成

template <class>
class CONT = std::deque // here CONT is templatized class declaration.

但困扰我的是,我们如何才能将某些内容分配给类名 CONT,而不是编写它的定义(到目前为止我已经完成了):

template <class>
class CONT{
//def
}

还有一件事:

template <class> // why its only class written in angle bracket there should be also be name
like : template<class ty>

非常感谢,非常感谢任何帮助)

最佳答案

What i don't understand is this : template class V

你的问题中没有这行,所以我帮不上忙。

template< template <typename ELEM> class CONT = std::deque >
class Stack

这是模板模板参数的声明。您将一个模板传递给 Stack 模板,然后 Stack 可以在内部使用它。

= std::deque 部分是默认值,以防您未指定 CONT 参数。 (std::deque 是一个预定义的模板。)

但是,这将不起作用,因为 std::deque 有两个参数。这将起作用:

template< template <typename ELEM, typename ALLOC> class CONT = std::deque >
class Stack

但是 ELEMALLOC 实际上并没有命名任何东西;它们的存在只是为了阐明所需模板的参数列表是什么。因此,您可以省略它们:

template< template <typename, typename> class CONT = std::deque >
class Stack

关于c++ - 你能帮我理解这个 C++ 模板代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com