Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较堆栈_C++_String_Char_Stack - Fatal编程技术网

C++ 比较堆栈

C++ 比较堆栈,c++,string,char,stack,C++,String,Char,Stack,我有一个项目,比较两个堆栈的内容,我有这个功能的问题。我相信我已经正确地完成了程序的其余部分。我在B.myCharacters.empty()(表达式必须具有类类型)和B==B.myCharacters(没有与这些操作数匹配的运算符“==”)上遇到错误 bool CharStack::IsEqual(CharStack&B) { if(B.empty()) { cout假设您的CharStack在内部将字符保存在std::string中,即 class CharStack { std::

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

bool CharStack::IsEqual(CharStack&B)
{
if(B.empty())
{

cout假设您的
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
的各种用法,假设
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

的各种用法。如果不知道
CharStack
是什么,没有人能帮上忙。欢迎这样做!不幸的是,除非您发布所使用的代码,特别是
CharStack
的定义,否则我们帮不了您多少忙。请参阅了解所需的内容。请注意,这会使s说两个空堆栈相等是有意义的。在您的代码段中,它们不相等。您会得到一个关于缺少运算符的错误,因为您没有定义如何比较两个不同的东西(
B
B.mycharacters
)。也就是说,您需要定义
CharStack::operator==(const t和otherCharacters)const
。(还请注意,您可能不希望在实际解决方案中使用此运算符。这只是您当前解决方案不需要抱怨缺少此运算符的运算符。)这次可能不是你的问题,但迟早这个问题中描述的错误会让你:请提供。在不知道什么是
CharStack
的情况下,没有人能帮助你。欢迎这样做!不幸的是,我们帮不了你很多,除非你发布所使用的代码,特别是
CharStack
的定义。请参阅ed.还请注意,说两个空堆栈相等是有道理的。在您的代码段中,它们不相等。您会得到一个关于缺少运算符的错误,因为您没有定义如何比较两个不同的东西(
B
B.mycharacters
)。也就是说,您需要定义
CharStack::operator==(const T&otherCharacters)const
(请注意,您可能不希望在实际解决方案中使用此运算符。这正是当前解决方案不需要抱怨缺少此运算符的运算符。)这次可能不是你的问题,但迟早这个问题中描述的错误会让你明白:在尝试比较堆栈之前,我还必须确保堆栈不是空的。你是什么意思?如果堆栈为空,应该如何比较它们?另请参阅我的编辑。如果堆栈为空,则不应该进行比较。应该重新编辑urn false,如果其中一个或两个堆栈都为空,则显示错误消息。这几乎像是比较它们的先决条件,但这是在函数内部完成的。没有任何意义。在尝试比较它们之前,我还必须确保堆栈不为空。你是什么意思?如果为空,应如何比较它们?参见al所以我的编辑。如果它们是空的,它不应该比较它们。如果其中一个或两个堆栈都是空的,它应该返回false,然后显示错误消息。这几乎像是比较它们的先决条件,但这是在函数内部完成的。没有意义。