C++ 搜索队列c+中是否存在元素+;

C++ 搜索队列c+中是否存在元素+;,c++,search,queue,C++,Search,Queue,所以我一直在尝试搜索用户输入的数字是否存在于队列中,如果存在,则函数将返回true,否则返回false。但是,无论我尝试什么方法,它都不起作用: bool cqueue::search(int x){ //this is my class cqueue if(empty()) { cout<<"\n\n queue is empty\n"; } for(int i=0;i<size;i++){ if(array[i]==x

所以我一直在尝试搜索用户输入的数字是否存在于队列中,如果存在,则函数将返回true,否则返回false。但是,无论我尝试什么方法,它都不起作用:

  bool cqueue::search(int x){ //this is my class cqueue
        if(empty()) { cout<<"\n\n queue is empty\n";  }
        for(int i=0;i<size;i++){
         if(array[i]==x){
             return true; cout<<x<<" is in the queue \n"; break; }
             else {
            return false; cout<<x<<" is not in the queue \n"; } 
         }
    } 
boolcqueue::search(intx){//这是我的类cqueue

如果(empty()){cout只有您的第一个cout语句可能会被执行,其他语句将不会被执行,因为当您返回某个内容时,这就是函数的结尾。可能将cout语句移到返回之前,它应该会工作


另外,如果array[i]!=x,则不应返回false,这只意味着array[i]不是您要查找的项。也许您可以添加一个布尔变量isFound,并且只有在找到该值时才将其设置为true。如果您到达循环的末尾,但未找到该值(isFound==false),然后返回false。

您应该改进缩进以查看程序流程。 您还应该知道,由于return“退出”函数,return语句之后的任何内容都不会执行。正如其他人所说的,如果对第一个元素的检查失败,函数将以return false退出;这意味着不会执行其他检查

bool cqueue::search(int x)
{ //this is my class cqueue
    if(empty())
        cout<<"\n\n queue is empty\n";

    for(int i=0;i<size;i++)
    {
        if(array[i]==x)
        {
            return true; 
            cout<<x<<" is in the queue \n"; 
            break;
        }
        else
        {
            return false; 
            cout<<x<<" is not in the queue \n";
        }
    }
} 
boolcqueue::search(int x)
{//这是我的课堂问答
if(空())

请按照您的逻辑进行操作。如果第一个元素与您的搜索不匹配,会发生什么情况?如果您的队列为空,您也不会返回任何内容。请确保您返回了一些内容。非常感谢您,它终于起作用了,我理解了这个问题。我想问,由于函数没有出现,我如何知道函数返回的是true还是falsear在输出“我是说当你运行代码时”。对不起,我是一个初学者,我想完全理解操作。在你的主函数中,你可以有一个像cout这样的语句