又来问问题了 比较两个vector是否相等

theITcat 2012-10-19 10:20:54

#include<iostream>
#include<string>
#include<cstddef>
#include<cctype>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec1;
vector<int> ivec2;
int number;
cout<<"input ivec1"<<endl;
while(number!=-1)
{
ivec1.push_back(number);
cin>>number;
}
cout<<"input ivec2"<<endl;
cin>>number; //the key
while(number!=-1)
{
cin>>number;
ivec2.push_back(number);

}
//²âÊÔÓï¾ä¶Î
vector<int>::iterator iter3,iter4;
for(iter3=ivec1.begin(),iter4=ivec2.begin();iter3!=ivec1.end(),iter4!=ivec2.end();++iter3,++iter4)
{cout<<"ivec1="<<*iter3<<endl;
cout<<"ivec2="<<*iter4<<endl;}

if(ivec1.size()!=ivec2.size())
{
cout<<ivec1.size()<<endl;
cout<<ivec2.size()<<endl;
cout<<"ivec1 != ivec2"<<endl;
}
else if(ivec1.size()==ivec2.size()==0)
cout<<"ivec1=ivec2"<<endl;
else
{
vector<int>::iterator iter1,iter2;
for(iter1=ivec1.begin(),iter2=ivec2.begin();iter1!=ivec1.end(),iter2!=ivec2.end();++iter1,++iter2)
{
if(*iter1!=*iter2)
cout<<"not equal"<<endl;
return 0;
}
cout<<"equal"<<endl;
}


问题是为什么运行的时候输入ivec1=1 2 3 和ivec2=1 2 3时 ivec1的第一个元素不等于1,而且ivec1!=ivec2
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxskyway 2012-10-20
  • 打赏
  • 举报
回复
int number; //number 未初始化
cout<<"input ivec1"<<endl;
while(number!=-1)
{
ivec1.push_back(number); /*首先进入vector的是未初始化的number, 应该把下面的
cin>>number放到前面,才会产生你要的结果*/
cin>>number;
}

Joseph_1118 2012-10-20
  • 打赏
  • 举报
回复
++
[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:
等学好这些基础之后,可以考虑STL中的一些算法,
比如说相等就可以用std::equal
template <class InputIterator1, class InputIterator2>
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2 );……
[/Quote]
theITcat 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

int number; //number 未初始化
cout<<"input ivec1"<<endl;
while(number!=-1)
{
ivec1.push_back(number); /*首先进入vector的是未初始化的number, 应该把下面的
cin>>number放……
[/Quote]解决了一部分问题 同样感谢。
theITcat 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

帮你修改了一下:
C/C++ code


#include "stdafx.h"
#include <iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> ivec1;
vector<int> ivec2;
int number = 0;
cout<<"input ……
[/Quote]谢谢 这样确实可以运行成功了
mujiok2003 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
等学好这些基础之后,可以考虑STL中的一些算法,
比如说相等就可以用std::equal
template <class InputIterator1, class InputIterator2>
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2 );

templat……
[/Quote]

++.
npuhuxl 2012-10-19
  • 打赏
  • 举报
回复
等学好这些基础之后,可以考虑STL中的一些算法,
比如说相等就可以用std::equal
template <class InputIterator1, class InputIterator2>
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2 );

template <class InputIterator1, class InputIterator2, class BinaryPredicate>
bool equal ( InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, BinaryPredicate pred );
Eleven 2012-10-19
  • 打赏
  • 举报
回复
帮你修改了一下:


#include "stdafx.h"
#include <iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> ivec1;
vector<int> ivec2;
int number = 0;
cout<<"input ivec1"<<endl;
while(1)
{
cin>>number;
if(-1 == number)
break;
ivec1.push_back(number);
}
cout<<"input ivec2"<<endl;

while(1)
{
cin>>number;
if(-1 == number)
break;
ivec2.push_back(number);
}

vector<int>::iterator iter3,iter4;
for(iter3=ivec1.begin(), iter4=ivec2.begin(); (iter3!=ivec1.end()) && (iter4 != ivec2.end()); ++iter3, ++iter4)
{
cout<<"ivec1="<<*iter3<<endl;
cout<<"ivec2="<<*iter4<<endl;
}

if(ivec1.size() != ivec2.size())
{
cout<<ivec1.size()<<endl;
cout<<ivec2.size()<<endl;
cout<<"ivec1 != ivec2"<<endl;
}
else
{
cout<<"ivec1 and ivec2 :";
vector<int>::iterator iter1,iter2;
bool bequal = true;
for(iter1=ivec1.begin(), iter2=ivec2.begin();(iter1!=ivec1.end()) && (iter2!=ivec2.end()); ++iter1, ++iter2)
{
if(*iter1!=*iter2)
{
bequal = false;
cout<<"not equal"<<endl;
break;
}

}
if(bequal)
cout<<"equal"<<endl;
}
return 0;
}

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧