一个有关迭代器的有关问题
一个有关迭代器的问题
#include<iostream>
#include<vector>
using namespace std;
int main()
{
cout<<"请输入第一组数组:"<<endl;
vector<int> vNum1;
int iNum1;
while(cin>>iNum1)
{
vNum1.push_back(iNum1);
}
cin.clear();
/*这种while循环读取未知数目的数组时,当cin读入ctrl+z时循环终止,cin此时的状态为eof状态,必须用cin.clear()清除此状态
才能继续进行输入*/
cout<<"请输入第二组数组:"<<endl;
vector<int> vNum2;
int iNum2;
while(cin>>iNum2)
{
vNum2.push_back(iNum2);
}
if(vNum1.size()!=vNum2.size())
{
cout<<"两个数组的长度不一样,故不相等!"<<endl;
return -1;
}
else
{
vector<int>::iterator it1=vNum1.begin();
vector<int>::iterator it2=vNum2.begin();
while(*it1==*it2&&it1!=vNum1.end()&&it2!=vNum2.end())
{
it1++;
it2++;
}
/*在写上面的while循环时如果把条件修改为:*it1==*it2 则结果不正确,不明白原因*/
if(it1==vNum1.end())
cout<<"两个数组相等!"<<endl;
else
cout<<"存在不相等的数,两个数组不相等!"<<endl;
}
return 0;
}
疑问写在第二个注释里面了,求解释。
------解决方案--------------------
iterator超出范围,不知道读到的会是什么
等高人
#include<iostream>
#include<vector>
using namespace std;
int main()
{
cout<<"请输入第一组数组:"<<endl;
vector<int> vNum1;
int iNum1;
while(cin>>iNum1)
{
vNum1.push_back(iNum1);
}
cin.clear();
/*这种while循环读取未知数目的数组时,当cin读入ctrl+z时循环终止,cin此时的状态为eof状态,必须用cin.clear()清除此状态
才能继续进行输入*/
cout<<"请输入第二组数组:"<<endl;
vector<int> vNum2;
int iNum2;
while(cin>>iNum2)
{
vNum2.push_back(iNum2);
}
if(vNum1.size()!=vNum2.size())
{
cout<<"两个数组的长度不一样,故不相等!"<<endl;
return -1;
}
else
{
vector<int>::iterator it1=vNum1.begin();
vector<int>::iterator it2=vNum2.begin();
while(*it1==*it2&&it1!=vNum1.end()&&it2!=vNum2.end())
{
it1++;
it2++;
}
/*在写上面的while循环时如果把条件修改为:*it1==*it2 则结果不正确,不明白原因*/
if(it1==vNum1.end())
cout<<"两个数组相等!"<<endl;
else
cout<<"存在不相等的数,两个数组不相等!"<<endl;
}
return 0;
}
疑问写在第二个注释里面了,求解释。
------解决方案--------------------
iterator超出范围,不知道读到的会是什么
等高人