王骏的BLOG
编程、网络技术点滴...
<
2008年12月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
公告
留言簿(24)
给我留言
查看公开留言
查看私人留言
随笔分类
数据库 (3)
(rss)
C++,VC (11)
(rss)
.NET (14)
(rss)
烂笔头备忘录 (11)
(rss)
Web开发 (6)
(rss)
网络管理 (5)
(rss)
疑难杂症备忘 (9)
(rss)
随笔档案
2008年11月 (1)
2008年10月 (2)
2008年8月 (1)
2008年6月 (1)
2008年5月 (1)
2008年4月 (1)
2008年3月 (3)
2008年2月 (1)
2008年1月 (3)
2007年12月 (5)
2007年11月 (2)
2007年6月 (1)
2007年2月 (2)
2007年1月 (1)
2006年10月 (3)
2006年8月 (1)
2006年2月 (3)
2006年1月 (1)
2005年12月 (2)
2005年11月 (5)
2005年10月 (3)
2005年9月 (1)
2005年7月 (3)
2005年6月 (2)
2005年5月 (4)
2005年3月 (2)
2005年2月 (3)
2004年5月 (2)
2004年4月 (1)
文章分类
WEB开发 (2)
(rss)
网络技术 (3)
(rss)
文章档案
2006年11月 (1)
2005年11月 (1)
2005年4月 (1)
2004年10月 (1)
2004年9月 (1)
相册
程序员娱乐 (2)
WEB开发
在线CSS词典
相关链接
VC知识库博客园地
(rss)
VC知识库首页
宝宝的主页
搜索
最新评论
1. re: ASP.NET大文件上传
为什么
buff = _request.GetPreloadedEntityBody();为NULL啊?
--路过
2. re: URL编解码(URLEncode,URLDecode)
多谢多谢!!!!
--KEN
3. re: IE无法打印一例
早上遇到有人的IE7(vista sp1)无法打印,他的临时文件在D盘,打印时说找不到文件。
解决办法:找到D盘上的临时文件夹,赋上对应的权限即可.
heron.96 AT Gm ail dot com
--VISTA
4. 中国美甲技术
[url=
http://www.coolestgirl.com.cn
]美甲[/url] 美甲
--零花钱
5. re: string与线程安全
--http://www.axdat.com
6. re: Sasser(震荡波)蠕虫病毒肆虐
不错不错,学习了。
--硬盘数据恢复
7. re: ASP.NET大文件上传
蛮热闹的嘛。..我也来踩踩
--上海国珍松花粉
8. re: ASP.NET大文件上传
支持一下,祝楼主越办越好!
--raid服务器数据恢复
9. re: .Text 使用经验:dotText的编译
好帖子,收藏了。
--硬盘数据恢复
10. re: URL编解码(URLEncode,URLDecode)
哈,太好了,正找真呢,谢谢。
--数据恢复
阅读排行榜
1. .Text 使用经验:dotText的编译(11747)
2. ASP.NET大文件上传(10223)
3. 利用Visual Assist X的模板功能提高编辑效率(7412)
4. IE无法打印一例(6082)
5. [烂笔头备忘录] 删除list元素(4185)
6. string与线程安全(4036)
7. Sasser(震荡波)蠕虫病毒肆虐(4023)
8. [HTTP 500 - 内部主机错误]的处理(3943)
9. 双SCSI硬盘安装小结(3487)
10. 将VC知识库.Text Blog 从.95升级到.96(3128)
评论排行榜
1. ASP.NET大文件上传(57)
2. Sasser(震荡波)蠕虫病毒肆虐(48)
3. string与线程安全(21)
4. IE无法打印一例(17)
5. .Text 使用经验:dotText的编译(16)
6. .NET中的3DES加密 (13)
7. 传奇游戏服务器源码学习(13)
8. 将VC知识库.Text Blog 从.95升级到.96(11)
9. XMLHTTP与客户端无刷新更新数据(11)
10. [烂笔头备忘录] 删除list元素(10)
VC知识库BLOG
首页
新随笔
联系
聚合
登录
随笔-61 文章-5 评论-247 Trackbacks-0
[烂笔头备忘录] 删除list元素
list
<
int
>
mylist;
mylist.push_back(
1
);
mylist.push_back(
2
);
mylist.push_back(
3
);
mylist.push_back(
1
);
mylist.push_back(
2
);
//
删除元素2
//
方式一
mylist.remove(
2
);
//
方式二
mylist.erase(remove_if(mylist.begin(), mylist.end(), not1(bind2nd(modulus
<
int
>
(),
2
))), mylist.end());
//
方式三
list
<
int
>
::iterator Iter;
list
<
int
>
::iterator EndIter = mylist.end();
for
(Iter
=
mylist.begin(); Iter
!=
EndIter; )
{
if
(
*
Iter
==
2)
Iter = mylist.erase(Iter);
else
Iter
++
;
}
打印出结果
list
<
int
>
::iterator Iter;
list
<
int
>
::iterator EndIter = mylist.end();
for
(Iter
=
mylist.begin(); Iter
!=
EndIter; Iter
++
)
{
cout
<<
*
Iter
<<
endl;
}
三种方式的速度比(数值越小速度越快)
1 : 1.63 : 1.17
注:这里的速度比较是简单的、粗糙的比较。
posted on 2005-02-20 22:23 王骏的BLOG 阅读(4185)
评论(10)
编辑
收藏
Comments
#
re: [烂笔头备忘录] 删除list元素
周星星
Posted @ 2005-02-21 09:14
看完,不错!
第一种方法给出了最正宗的做法
第二种方法暗示了remove_if用于list容器的注意点
第三种方法暗示了容器迭代时erase时的注意点
#
re: [烂笔头备忘录] 删除list元素
wangjun
Posted @ 2005-02-21 09:42
:-) 我常用到第三种方式,因为有时是list<CXXX *>::iterator Iter;
还需要对*Iter做点啥,例如
(*Iter)->OnBeforeDelete();
delete *Iter;
#
re: [烂笔头备忘录] 删除list元素
周星星
Posted @ 2005-02-21 09:57
第三种方法确实功能最强大,虽然正宗的做法是使用std::list::remove_if(不是std::remove_if),但仿函数写起来麻烦,而且函数内部的仿函数不能用于模板,写在函数外部又导致代码污染。
#
re: [烂笔头备忘录] 删除list元素
wangjun
Posted @ 2005-02-21 20:17
同感!
#
re:
_hpho
Posted @ 2005-02-22 11:20
list<int>::iterator Iter = mylist.begin();
list<int>::iterator EndIter = mylist.end();
for(; Iter != EndIter; ++Iter) {
cout << *Iter << endl;
}
#
第1种第3种一样吧。第二种理论上编译器是可以优化的。
七猫的垃圾箱
Posted @ 2005-02-22 16:02
void remove(const _Ty& _Val)
{ // erase each element matching _Val
iterator _Last = end();
for (iterator _First = begin(); _First != _Last; )
if (*_First == _Val)
_First = erase(_First);
else
++_First;
}
template<class _Pr1>
void remove_if(_Pr1 _Pred)
{ // erase each element satisfying _Pr1
iterator _Last = end();
for (iterator _First = begin(); _First != _Last; )
if (_Pred(*_First))
_First = erase(_First);
else
++_First;
}
#
re: [烂笔头备忘录] 删除list元素
王骏的BLOG
Posted @ 2005-02-22 18:40
谢谢各位,方式三现在看起来舒服多了。
标题
姓名
主页
验证码
*
内容
Remember Me?
登录
使用高级评论
Top
[使用Ctrl+Enter键可以直接提交]