读书人

什么原因罗致在VS2010里面报错了求解

发布时间: 2012-07-30 16:19:05 作者: rapoo

什么原因导致在VS2010里面报错了,求解!

C/C++ code
#include <iostream>#include <cctype>#include <string>#include <vector>//#include <bitset>using namespace std;//string sa1[10];int main(){    vector<int> ivec1,ivec2;    int ival;    cin>>ival;    while(ival!=-1){        ivec1.push_back(ival);        cin>>ival;    }    cin>>ival;    while(ival!=-1){        ivec2.push_back(ival);        cin>>ival;    }    if(ivec1.size()!=ivec2.size())        cout<<"ivec1 is not equal to ivec2!"<<endl;    else if(ivec1.size()== 0)        cout<<"ivec1 is not equal to ivec2!"<<endl;    else {        vector<int>::iterator iter1,iter2;        iter1=ivec1.begin();        iter2=ivec2.begin();        while(*iter1==*iter2&&(iter1!=ivec1.end())&&(iter2!=ivec2.end()))            ++iter1,++iter2;    if(iter1==ivec1.end())        cout<<"equal"<<endl;    else cout<<"not equal"<<endl;    }    return 0;}


什么原因导致在VS2010里面报错了,求解!

[解决办法]
while((iter1!=ivec1.end())&&(iter2!=ivec2.end())&&*iter1==*iter2)

原因很简单,对end()返回的迭代器进行解引用时未定义的。
[解决办法]
探讨
while((iter1!=ivec1.end())&&(iter2!=ivec2.end())&&*iter1==*iter2)

原因很简单,对end()返回的迭代器进行解引用时未定义的。

读书人网 >C++

热点推荐