首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小初学者的困惑(C++有关问题)

2012-10-24 
小菜鸟的困惑(C++问题)题目的要求是:编写程序判断两个vector是否相等,我写的代码如下:#include iostream

小菜鸟的困惑(C++问题)
题目的要求是:编写程序判断两个vector是否相等,我写的代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
  int c,d;
  vector<int> a(4);
  vector<int> b(4);
  while(cin >> c&& c!=0)//输入0表示结束
  {
  a.push_back(c);
  }
  while(cin >> d && d!=0 )
  {
b.push_back(d);
  }
  for(vector<int>::iterator iter1=a.begin() , iter2=b.begin();iter1 != a.end()&&iter2 != b.end();iter1++,iter2++)
  {
if (*iter1==*iter2)
{
cout << "两个数组相等";
  break;
}
  else if (*iter1 > *iter2)

cout << "第一个数组大于第二个数组";
break; 
}

else
{
cout << "第二个数组大于第一个数组";
  break;
}
  }

  return 0;


}
为啥我的结果总是显示:两个数组相等,没有别的输出,编译没有出错,还请各位多多指点~小弟不胜感激 ~ 囧

[解决办法]
我上机跑了下,LZ问题是这样的。一切都正常,确实,问题在于当你输出第一个0时候,判断是相等的,所以直接BREAK出FOR循环了,程序就结束了。首先当你去掉BREAK语句时候,如果你去掉PUSHBACK输入,你会发现a和b是相等的,具体DEBUG会发现都是5个0。原因是你初始化语句错了,开头5个是0,后面才会继续输入。你应该把vector<int> a(5);里面的(5)去掉,因为这个含义是初始化5个0。所以附上改良版。但是这个仍然不能判定整个VECTOR是相等的,你要加入其它的措施,这个就简单了。

C/C++ code
#include <iostream>#include <vector>using namespace std;int main(){  int c,d;  vector<int> a;  vector<int> b;  a.push_back(3);  a.push_back(4);  b.push_back(3);  b.push_back(4);  vector<int>::iterator iter1=a.begin();  vector<int>::iterator iter2=b.begin();  for(;iter1 != a.end()&&iter2 != b.end();iter1++,iter2++)  {if (*iter1==*iter2){cout << "equal"<<endl;cout<<"iter1: "<<*iter1<<" iter2: "<<*iter2<<endl;  //break;}  else if (*iter1 > *iter2){cout << "1 large"<<endl;}else{cout << "2 large"<<endl;}  }  return 0;} 

热点排行