#include <list>
#include <iostream>
#include <string>
using namespace std;
typedef struct _a
{
int i;
string str;
}peng;
int main(void)
{
list <peng> mylist;
peng tmp;
tmp.i=1;
tmp.str="peng";
mylist.push_back(tmp);
tmp.i=2;
tmp.str="hai";
mylist.push_back(tmp); tmp.i=3;
tmp.str="lu";
mylist.push_back(tmp);
list <peng>::iterator it;
for(it=mylist.begin();it!=mylist.end();it++)
{
cout<<it->i<<endl; //error occur
cout<<it->str<<endl;
mylist.erase(it); }
return 3;
}
#include <iostream>
#include <string>
using namespace std;
typedef struct _a
{
int i;
string str;
}peng;
int main(void)
{
list <peng> mylist;
peng tmp;
tmp.i=1;
tmp.str="peng";
mylist.push_back(tmp);
tmp.i=2;
tmp.str="hai";
mylist.push_back(tmp); tmp.i=3;
tmp.str="lu";
mylist.push_back(tmp);
list <peng>::iterator it;
for(it=mylist.begin();it!=mylist.end();it++)
{
cout<<it->i<<endl; //error occur
cout<<it->str<<endl;
mylist.erase(it); }
return 3;
}
你erase后,迭代器就有问题了
去掉就可以了