【C++】vector容器和list容器中使用单个迭代器的erase函数学习笔记

例题为:假设有如下ia的定义,ia复制到vector和list中,把list容器中奇数值元素删除掉,把vector容器偶数值元素删除掉。

数组复制采用push_back操作。删除操作采用了erase函数,由于该函数返回值为指向被删除元素后面的元素,则使用了返回值赋值回给迭代器的方法,对迭代器进行前移,保证循环的继续进行。相当于迭代器回到了erase操作之前的状态,只是迭代器自增后指向的值为删除元素后的元素。


/*
 * delete.cpp
 *
 *  Created on: 2015年4月10日
 *      Author: CXH
 */

#include 
#include  //vector容器类型头文件
#include 	//list容器类型头文件
using namespace std;
int main()
{
	int ia[]={0,1,1,2,3,5,8,13,21,55,89};
	int iasize=sizeof(ia)/sizeof(int);
	cout< ivec;
	list ilist;
	for (int i=0; i::iterator listit=ilist.begin(); listit!=ilist.end(); listit++) {
		if (*listit%2!=0) {//判断是奇数
			listit=ilist.erase(listit);//erase函数返回值为指向被删除元素后面的元素
			listit--;
		}
	}
	for (list::iterator listit=ilist.begin(); listit!=ilist.end(); listit++) {
		cout<<*listit<<'\n';
	}

	//剔除偶数后的内容
	for (vector::iterator vecit=ivec.begin(); vecit!=ivec.end(); vecit++) {
		if(*vecit%2==0){//判断是偶数
			vecit=ivec.erase(vecit);//erase函数返回值为指向被删除元素后面的元素
			vecit--;
		}
	}
	for(vector::iterator vecit=ivec.begin();vecit!=ivec.end();vecit++){
		cout<<*vecit<<'\n';
	}

	return 0;
}

运行结果:

【C++】vector容器和list容器中使用单个迭代器的erase函数学习笔记_第1张图片


你可能感兴趣的:(C++,学习笔记)