直接在Code。在 Picture
#include <iostream>
#include <list>
using namespace std;
// STL在迭代的过程中,删除指定的元素
int main()
{
list<int> listTest;
listTest.push_back(-1);
listTest.push_back(-1);
listTest.push_back(-1);
listTest.push_back(-1);
cout<<"list size: "<<listTest.size()<<endl;
list<int>::iterator itList;
for (itList=listTest.begin(); itList != listTest.end(); /*no itList++ !!*/ )
{
cout<<"data: "<<*itList<<endl;
// 第一种方法
if (*itList <= 0)
itList = listTest.erase(itList);
else
++itList;
}
cout<<"list size: "<<listTest.size()<<endl;
cout<<"======================================"<<endl;
listTest.push_back(-1);
listTest.push_back(-1);
listTest.push_back(-1);
listTest.push_back(1);
cout<<"list size: "<<listTest.size()<<endl;
for (itList=listTest.begin(); itList != listTest.end(); ++itList)
{
cout<<"data: "<<*itList<<endl;
// 另外一种方法
if (*itList <= 0)
*itList = 0; // 做个记录标志。等待迭代完进行回收
}
listTest.remove(0); // 回收 0
cout<<"list size: "<<listTest.size()<<endl;
cout<<"======================================"<<endl;
return 0;
}
执行结果:
版权声明:本文博主原创文章。博客,未经同意,不得转载。 http://blog.csdn.net/core__code