标题:关于STL容器删除元素的模板方法
取消只看楼主
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
 问题点数:0 回复次数:0 
关于STL容器删除元素的模板方法


template<class T,class Function>
void EraseFromBy(T& from,Function by)
{
T::iterator iter = from.begin() , prev = iter;
while(iter!=from.end())
{
if(by(*iter))
{
t.erase(iter);
if(prev == iter)
iter = prev = from.begin();
else
{
iter = prev;
iter++;
}
}
else
{
prev = iter;
iter++;
}
}
}



使用方法:
bool ShouldBeDeal(int a) //该函数传递给EraseFromBy,用于做删除的判断选项
{
if(a%2==0)
return true;
return false;
}
void main( void )
{
set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
copy(s.begin(),s.end(),ostream_iterator<int>(cout,\"\n\"));
EraseFromBy(s,ShouldBeDeal);
copy(s.begin(),s.end(),ostream_iterator<int>(cout,\"\n\"));
}

搜索更多相关主题的帖子: STL 容器 元素 模板 bool 
2007-11-17 10:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-186662-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.265338 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved