template <typename T>
bool operator==(const Stack<T>& a, const Stack<T>& b)
我必须使用STL实现堆栈adt(我选择了向量)
我无法重载此非成员全局函数。我在私有部分有一个向量,我想通过弹出并检查顶部来比较每个元素,看看它们是否相等,但是,我不能这样做,因为堆栈是const。有人可以引导我走向正确的方向吗?
答案 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_;
}