比较堆栈

时间:2018-02-24 13:50:36

标签: c++ string char stack

我有一个项目来比较两个堆栈的内容,我遇到了这个函数的问题。我相信我已经正确完成了其余的程序。我在B.myCharacters.empty()上遇到错误(表达式必须有类型)和B == B.myCharacters(没有运算符" =="匹配这些操作数)。

#wp-megamenu-primary_navigation{
        clear: both;
}

非常感谢任何帮助。

这是标题和驱动程序。它们是由老师为这个项目提供的,即使有更好的方法,也不允许我改变它们。

#wp-megamenu-primary_navigation {   
    padding-right: 15px !important;
    padding-left: 15px !important;
    display: inline-block;
}

驱动程序

bool CharStack::IsEqual(CharStack & B) 
{
    if (B.empty()) 
    {
        cout << "Stack is empty" << endl;
        return false;
    } 
    else if (B.myCharacters.empty()) 
    {
        cout << "Stack is empty" << endl;
        return false;
    } 
    else if (B == B.myCharacters)
        return true;
}

1 个答案:

答案 0 :(得分:2)

假设您的CharStack在内部将字符保留在std::string,即

class CharStack
{
    std::string myCharacters;    // internal data
  public:
    bool IsEqual(CharStack const&) const;
    /* ... */
};
如果两个堆栈相同,那么

IsEqual()应该返回,那么实现就是

bool CharStack::IsEqual(CharStack const&other) const
{
    return myCharacters == other.myCharacters;
}

这将空堆栈和非空堆栈比较为不相等,但两个空堆栈相等,这可能是正确的行为。如果你想要两个空堆栈不相等,你可以

bool CharStack::IsEqualNonEmpty(CharStack const&other) const
{
    return !myCharacters.empty() && myCharacters == other.myCharacters;
}

还请注意关键字const的各种用法。