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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sss_369/article/details/87927049

【注】:

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

猜你喜欢

转载自blog.csdn.net/sss_369/article/details/87927049