COCO2092 发表于 2015-2-15 09:31:38

各路C++大牛们 求助啊求助啊

这是我作业老师闪空给我自己写function中的一个:红色字体为老师给出
也就是body自己写
功能:比较两个vector list1与list2中是否包含彼此的元素
若list1中包含list2中的所有种类元素则
list1 contains list2 :yes
若不是则返回:no
同理
若list2中包含list1中的所有种类元素则
list2 contains list1:yes
若不是则返回:no
bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    vector<int>lista=list1;
    vector<int>listb=list2;

    bool NoYes(int);
    int m,n;

    for(m=0;m<lista.size();m++)
      {
            for(n=0;n<listb.size();n++)
            {
                if(lista==listb)
                  break;

            }   
      if(lista!=listb)                        
      return true;
                     //else return false;
    }
}


我这个循环问题啊 帮忙看看哪里错了呗

李小白 发表于 2015-2-15 13:49:45

break; 只能跳出单层循环 如果一直相等好像没有返回值啊 能编译通过吗?

COCO2092 发表于 2015-2-16 03:21:05

李小白 发表于 2015-2-15 13:49
break; 只能跳出单层循环 如果一直相等好像没有返回值啊 能编译通过吗?

昨天太着急 急着赶校车...没有表达清楚
我想实现的是两个乱序vector list1 与 list2中元素是否contains
eg list1 :3 4 5 4 3 5
   list2 :3 4 5
list1 contians list2 ? :yes
list2 contians list1 ? :yes

eg list1 :3 4 4 5 7
   list2 :3 4 5
list1 contians list2 ? :yes
list2 contians list1 ? :no

这是举得例子!

我采取两层循环
【1】从list1的第一个元素与list2的一个元素开始比较
【2】直到找到list2中与其相等的元素
【3】若找到 跳出第二层循环 外层循环加1 重复【1】
         若找不到说明list2 contains list1 ?:No 直接跳出全部的循环

咋整啊 咋整啊 咋跳出全部的循环啊

李小白 发表于 2015-2-16 12:23:55

课本上的东西不太懂 是否是这个意思呢? 就是方法好像比较笨

for(m=0;m<lista.size();m++)
         
{
            
    for(n=0;n<listb.size();n++)
            
    {
               
       if(lista==listb)
                  
       break;

         
   }

   if(n==listb.size())
    {                     
         
         list2 不包含 list1
         break;
         
   }
         
   
}

if(m==lista.size())
{                     
         
    list2 包含 list1         
}


for(n=0;n<lista.size();n++)
         
{
            
    for(m=0;m<listb.size();m++)
            
    {
               
       if(lista==listb)
                  
       break;

         
   }

   if(m==listb.size())
    {                     
         
         list1 不包含 list2
         break;
         
   }
         
   
}

if(n==lista.size())
{                     
         
    list1 包含 list2      
}

COCO2092 发表于 2015-2-20 01:39:03

李小白 发表于 2015-2-16 12:23
课本上的东西不太懂 是否是这个意思呢? 就是方法好像比较笨

for(m=0;m

不成
bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    for(unsigned int i=0;i<list2.size();i++){

      if(find(list1.begin(),list1.end(),list2)!=list1.end()){
    }else{return 0;}
            }
return 1;
}

COCO2092 发表于 2015-2-20 01:40:22

bool contains(const std::vector<int>& list1, const std::vector<int>& list2) {
    for(unsigned int i=0;i<list2.size();i++){

      if(find(list1.begin(),list1.end(),list2)!=list1.end()){
    }else{return 0;}
            }
return 1;
}
这是好使的
页: [1]
查看完整版本: 各路C++大牛们 求助啊求助啊