使用向量

时间:2016-03-03 23:34:47

标签: c++ vector stack overloading operator-keyword

template <typename T>
bool operator==(const Stack<T>& a, const Stack<T>& b)

我必须使用STL实现堆栈adt(我选择了向量)

我无法重载此非成员全局函数。我在私有部分有一个向量,我想通过弹出并检查顶部来比较每个元素,看看它们是否相等,但是,我不能这样做,因为堆栈是const。有人可以引导我走向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

为什么不在operator==数据对象上使用std::vector?您只需要friend声明:

template<typename T> class Stack {
  /* The following allows operator== to use private members */
  friend bool operator==(const Stack&, const Stack&);
  public: /* ... */
  private:
    std::vector<T> data_;
};

template<typename T>
bool operator==(const Stack& a, const Stack& b) {
  return a.data_ == b.data_;
}