|
有一下一段代码:
#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main(){
int a[]={1,3,5,4,3,5,4,7,6,4};
list<int> one(a,a+sizeof(a)/sizeof(int));
list<int>::iterator t;
for(t=one.begin();t!=one.end();++t){
if(*t==3)
one.erase(t);
int val=*t;
cout<<val<<",";
}
cout<<endl;
system("pause");
return 0;
}
以上这段代码是从list中把3的元素删除。但是会出错,编译没有错。大概就是第一个元素可以输出,但在删除第一个元素为3的时候,循环就会出错。请求解答。
这个就是《实用C++》第49课 C++容器之链表list② 的课后作业题吧?
- #include<iostream>
- #include<vector>
- #include<list>
- using namespace std;
- int main()
- {
- int a[] = { 1, 3, 5, 4, 3, 5, 4, 7, 6, 4 };
- list<int> one(a, a + sizeof(a) / sizeof(int));
- list<int>::iterator t;
- for (t = one.begin(); t != one.end();)
- {
- int val = *t;
- cout << val << ",";
- if (*t == 3)
- {
- t = one.erase(t);
- }
- else
- ++t;
- }
- cout << endl;
- system("pause");
- return 0;
- }
复制代码
|
上一篇: 为什么if条件判断中两个不等的值判断相等会通过执行下一篇: 研究Ollydbg ClistCtrl 算法显示问题
|