您的位置:首页 > 其它

STL在迭代的过程,删除指定的元素

2015-08-25 18:23 429 查看
直接在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;

}


执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: