【问题标题】:Using STL's list object for Stack creation使用 STL 的列表对象创建 Stack
【发布时间】:2013-06-06 20:26:55
【问题描述】:

我想在 C++ 中创建一个堆栈列表,但编译器给了我一些错误消息:

 #include <list>
    #include <stack>

    class cName
    {
        [...]
        list<stack> list_stack;
        [...]
    }

错误:

error C2143: syntax error : missing ';' before '<'

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

error C2238: unexpected token(s) preceding ';'

【问题讨论】:

  • stack 本身就是一个模板。您需要将它与模板参数一起使用。您还应该在类型名称前加上std::,即std::liststd::stack

标签: c++ list data-structures stl stack


【解决方案1】:

如果您希望堆栈只处理一种类型,例如 int,请将代码中的 stack 更改为 int

list<int> list_stack;

否则你应该创建你自己的模板类型而不是使用stack:

template <class T> 
class List
{
    list<T> list_stack;

    T top();
    void push(T v);
};

【讨论】:

    【解决方案2】:

    std::stack 是一个模板,您需要将它与模板参数一起使用。示例:

    class cName
    {
      typedef int ConcreteType;
      std::list<stack<ConcreteType> > list_stack;
                      ^^^^ use it with real type
    };
    

    【讨论】:

      【解决方案3】:

      堆栈也是模板化的,所以应该是

      list<stack <...> > list_stack;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-18
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多