我对stl很陌生。有人可以让我知道这里发生了什么吗?
为什么下面的代码段会在l.erase(i);
上出错。我希望主要看到修改过的列表l
,因为我通过引用传递了该列表。这是怎么了?
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void erase (list<int> &l,int v){
list<int>::iterator i=l.begin();
for(;i!=l.end();++i){
if(*i==v)
l.erase(i);
}
}
int main()
{
list <int> a;
a.push_back(4);
a.push_back(5);
a.push_back(6);
list<int>::iterator i=a.begin();
for(;i!=a.end();++i) cout << *i << " ";
erase(a,5);
cout << "\nafter:\n";
list<int>::iterator j=a.begin();
for(;j!=a.end();++j) cout << *j << " ";
}