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;

}

运行结果:

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

时间: 2024-10-13 03:12:46

STL在迭代的过程中,删除指定的元素的相关文章

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<<

String的两个API,判断指定字符串是否包含另一字符串,在字符串中删除指定字符串。

// 在字符串中删除指定字符串. String phoneNum="1795112345"; phoneNum = phoneNum.replace("17951", ""); System.out.println(phoneNum); //判断指定字符串是否包含另一字符串 String phoneNum="1795112345"; String IpNum="17951"; return phoneNum

遍历List过程中删除元素的正确做法(转)

遍历List过程中删除元素的正确做法   public class ListRemoveTest {     3 public static void main(String[] args) { 4         List<Integer> list = new ArrayList<Integer>(); 5         list.add(1); 6         list.add(2); 7         list.add(2); 8         list.add(

ES6数组中删除指定元素

知识点: ES6从数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. arr.splice(arr.findIndex(item => item.id === data.id), 1) http://louiszhai.github.io/2017/04/28/array/ 1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组

jquery删除指定li元素简单介绍

jquery删除指定li元素简单介绍:本章节介绍一下如何利用jquery删除指定的li元素,虽然比较简单,但这也是比较常见的操作,可能很多初学者还是不够了解,下面就通过代码实例介绍一下如何实现此功能,代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.sof

Java循环中删除一个列表元素

本文主要想讲述一下我对之前看到一篇文章的说法.假设跟你的想法有出入,欢迎留言.一起讨论. #3. 在循环中删除一个列表元素 考虑以下的代码.迭代过程中删除元素: ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d")); for (int i = 0; i < list.size(); i++

js在数组中删除重复的元素自保留一个

js在数组中删除重复的元素自保留一个 第一种思路是:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 用到两个函数:for ...in 和 indexOf() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <script type="text/javascript"> var student = ['qiang','ming','tao','li','liang','you','qiang'

【Linux】linux中删除指定文件外所有其他文件(夹)的问题

今天碰到要删除指定文件(夹)外的其他文件的问题.网上查到的方法是这样的 需要在当前文件夹中进行: rm -rf !(keep) #删除keep文件之外的所有文件 rm -rf !(keep1|keep2) #删除keep1和keep2文件之外的所有文件 在Ubuntu14.04下有个大坑,keep1和keep2与“|"之间千万不能留空格,就是!(keep1 | keep2).这样的话会删除当前文件夹内的所有文件. 应该这样写(keep1|keep2). 具体原因未知,等慢慢寻找.以后再来补充.

vector 迭代 删除指定的元素

std::vector< Bullet * > m_vBullets; std::vector< Bullet * > m_vRemoveBulltes; if ( m_vRemoveBulltes.size() > 0 ){ for ( std::vector< Bullet * >::iterator it = m_vRemoveBulltes.begin(); it != m_vRemoveBulltes.end(); it++){  //需要删除的子弹 f