【发布时间】:2020-09-08 23:29:05
【问题描述】:
使用模板类 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 类获取实现的问题。使用迭代器
【问题讨论】:
-
请在问题中包含minimal reproducible example 和错误消息
-
你还没有定义
Iterator类型。 -
提供一个通过引用返回元素的
top()方法是危险的,因为在调用pop()后最上面的元素可能会变得无效。很可能有人使用top()获取最顶层的元素,然后使用pop()删除该元素。如果pop()被监督,然后该元素被访问,它会导致未定义的行为。