#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef vector<int> vecInt;
typedef vector<int>::iterator vecIterator;
void print(vecInt& vInt)
{
vecIterator itBeg = vInt.begin();
vecIterator itEnd = vInt.end();
for (NULL; itBeg != itEnd; ++itBeg)
{
cout << *itBeg << " ";
}
cout << endl;
}
// 删除容器的指定值
template<class T>
bool DelSpecValue(std::vector<T>& coll, T val)
{
// 注意算法 remove 只是移除元素,但未缩减容器的大小,所以得调用 coll.erase
coll.erase(remove(coll.begin(), coll.end(),
val),
coll.end());
return true;
}
// 删除容器第一个找到的值
template<class T>
bool DelFindFirstValue(std::vector<T>& coll, T val)
{
std::vector<T>::iterator pos = find(coll.begin(), coll.end(), val);
if (pos != coll.end())
{
coll.erase(pos);
}
return true;
}
int _tmain()
{
vecInt vInt;
for (int i = 0; i < 10; ++i)
{
vInt.push_back(i);
vInt.push_back(i);
}
print(vInt);
cout << endl << " ============================ " << endl;
DelSpecValue(vInt, 2);
DelFindFirstValue(vInt, 5);
print(vInt);
return 0;
}
vector 移除与某值想得的所有元素
最新推荐文章于 2024-01-21 15:46:24 发布