实现模板类堆栈

时间:2020-05-22 07:17:48

标签: c++ list templates stack

使用模板类List实现类堆栈时出现错误。

#include <iostream>
#include <stdexcept>

template<class T>
class Stack
{
private:
List<T> fElements;

public:

typedef typename List<T>::Iterator Iterator;

bool isEmpty() const;
int size() const;
void push( const T& aItem );
void pop();
const T& top() const;

const T& operator[]( size_t aIndex ) const;

// stack iterators
Iterator begin() const;
Iterator end() const;
Iterator rbegin() const;
Iterator rend() const;
};

使用类Stack获取实现的问题。使用迭代器

2 个答案:

答案 0 :(得分:1)

您只需要包括列表头,使用小写的list而不是大写的List并指定名称空间std:

#include <iostream>
#include <stdexcept>
#include <list>

template<class T>
class Stack
{
private:
    std::list<T> fElements;

public:

    typedef typename std::list<T>::Iterator Iterator;

    bool isEmpty() const;
    int size() const;
    void push( const T& aItem );
    void pop();
    const T top() const;

    const T &operator[]( size_t aIndex ) const;

    // stack iterators
    Iterator begin() const;
    Iterator end() const;
    Iterator rbegin() const;
    Iterator rend() const;
};

答案 1 :(得分:0)

您应该包含list标头,并且c ++是区分大小写的编程语言,因此,根据标准声明数据类型(对此为Abstract)并指定std名称空间非常重要。

    #include <iostream>
    #include <stdexcept>
    #include <list>

    template<class T>
    class Stack
    {
    private:
    std::list<T> fElements;

    public:

    typedef typename std::list<T>::Iterator Iterator;

    bool isEmpty() const;
    int size() const;
    void push( const T& aItem );
    void pop();
    const T& top() const;

    const T& operator[]( size_t aIndex ) const;

    // stack iterators
    Iterator begin() const;
    Iterator end() const;
    Iterator rbegin() const;
    Iterator rend() const;
    };