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


    直接上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;
    
    }
    

    执行结果:


  • 相关阅读:
    C语言调试示例
    Tiff格式详解(转载)
    指纹
    twitter
    baidu
    NoSuchMethodError随记
    IllegalArgumentException异常
    Springboot2.2.9接入阿里云ES(带高亮查询)
    阿里云ECS安装cnpm
    阿里云ECS安装docker
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6915612.html
Copyright © 2020-2023  润新知