您的位置:首页

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

2017-05-28 14:02 363 查看
直接上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;

}


执行结果:

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