您的位置:首页 > 其它

vector 移除与某值想得的所有元素

2014-09-16 18:34 190 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐