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

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

2012-07-30 
什么原因导致在VS2010里面报错了,求解!C/C++ code#include iostream#include cctype#include string

什么原因导致在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())&amp;&amp;(iter2!=ivec2.end())&amp;&amp;*iter1==*iter2)

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

热点排行