【发布时间】:2016-06-17 13:11:26
【问题描述】:
template <typename T>
bool operator==(const Stack<T>& a, const Stack<T>& b)
我必须使用 STL 实现堆栈 adt(我选择了向量)
我无法重载这个非成员全局函数。我在私有部分中有一个向量,我想通过弹出并检查顶部以查看它们是否相等来比较每个元素,但是,我不能这样做,因为堆栈是 const。有人可以引导我走向正确的方向吗?
【问题讨论】:
-
不要
pop。peek. -
必须是全局函数吗?如果没有,只需实现成员函数并手动检查元素而不弹出任何内容?
-
也可以将函数声明为
Stack的friend,然后直接比较vectors。 -
它必须是一个全局函数,并且 peek 不是我需要定义的成员函数之一
-
以破坏正在比较的对象的方式实现
==有点,容我们说,不友好。==通常采用 const 操作数并非偶然。
标签: c++ vector stack overloading operator-keyword