C++:vector 删除符合条件的元素

【注】:

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。

C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。

1. std::vector::erase()

iterator erase (iterator position);  //删除指定元素

iterator erase (iterator first, iterator last);//删除指定范围内的元素

返回值:指向删除元素(或范围)的下一个元素。

2. 实例

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int out(vector<int> &iVec)
{
	for (int i = 0; i < iVec.size(); i++)
		cout << iVec[i] << ends;
	cout << endl;
	return 0;
}

int main()
{
	vector<int> iVec;
	int i;
	for (i = 0; i < 10; i++)
		iVec.push_back(i);

	cout << "The Num(old):"; out(iVec);

    vector<int>::iterator it;//定义迭代器
	for (it = iVec.begin(); it != iVec.end();)
	{
		if (*it % 3 == 0)
			it = iVec.erase(it);    //删除元素,返回值指向已删除元素的下一个位置    
		else
			++it;    //指向下一个位置
	}
	cout << "The Num(new):"; out(iVec);
	return 0;
}

参考文章

1.  https://www.cnblogs.com/xudong-bupt/p/3522457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值