各路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;
}
}
我这个循环问题啊 帮忙看看哪里错了呗
break; 只能跳出单层循环 如果一直相等好像没有返回值啊 能编译通过吗? 李小白 发表于 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 直接跳出全部的循环
咋整啊 咋整啊 咋跳出全部的循环啊
课本上的东西不太懂 是否是这个意思呢? 就是方法好像比较笨
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
} 李小白 发表于 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;
}
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]