王骏的BLOG
编程、网络技术点滴...
<
2010年3月
>
日
一
二
三
四
五
六
28
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
公告
留言簿(31)
给我留言
查看公开留言
查看私人留言
随笔分类
Pocket PC (5)
(rss)
数据库 (4)
(rss)
C++,VC (17)
(rss)
.NET (16)
(rss)
烂笔头备忘录 (14)
(rss)
Web开发 (31)
(rss)
网络管理 (6)
(rss)
疑难杂症备忘 (14)
(rss)
随笔档案
2010年2月 (2)
2010年1月 (1)
2009年12月 (3)
2009年11月 (1)
2009年10月 (2)
2009年9月 (2)
2009年8月 (9)
2009年7月 (11)
2009年6月 (5)
2009年5月 (2)
2009年3月 (8)
2009年2月 (1)
2009年1月 (1)
2008年12月 (4)
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)
程序员娱乐 (2)
WEB开发
OKBASE.NET论坛历史帖子
相关链接
OKBASE.NET
UI图库
VC知识库Alexa排名
VC知识库博客园地
(rss)
VC知识库首页
好乐购
好乐购导购
宝宝的主页
搜索
最新评论
1. re: MacBook Pro 安装Windows XP
老大,你是有个钱淫,
macbookpro好贵的呢.
--山丘之王
2. re: UCenter info: MySQL Query Error (UCenter一个错误的解决)
非常感谢你的博客,呵呵,问题解决了
--学习万岁
3. re: URL编解码(URLEncode,URLDecode)
谢谢博主分享,收下了,
不过有个问题说下, 如果这个URL字符中有 中文等多字节字符,则解析有问题,最好把
dsturl += (unsigned char)nvalue;
这句改成 wstring wstrDsturl;
wstrDsturl += nvalue;
===这样获得 unicode编码格式的字符串,再转换回本地的ANSI编码
--tyt2008cn
4. re: 一个线程池(ThreadPool)的使用
这个线程池很慢,还不如windows自带的API。。唉,甚至于不是一个数量级的
--fish
5. re: Windows 2003下FastCGI+PHP5的安装教程(转载)
微软越来越走向开放了。吸取来自他竞争对手的能量。是好事。
比如2008上就吸取了linux很多的东西。
--大虾米(dxm)的技术博客
6. re: phpMyAdmin 错误
将语言选择“english”多试几次!
--王骏的BLOG
7. re: phpMyAdmin 错误
你好,我的也是这个问题,我都搞了好几天了,:按照网上提供的资料都无法解决这个问题,你能帮帮我吗?我的QQ号是314564833非曲直
--生命之弦
8. re: URL编解码(URLEncode,URLDecode)
string strEncode = UrlEncode(str1);
printf("%s ", UrlDecode(strEncode ).c_str()); // URL解码
这个重新解码出来的, 汉字不能还原...
--nh
9. re: GZip格式的HTTP页面的解压缩(依赖zlib)
看看,复制一份研究一下
--倍美丛
10. re: GZip格式的HTTP页面的解压缩(依赖zlib)
网上确实存在许多版本都失败
--凡客诚品官方网站
阅读排行榜
1. .Text 使用经验:dotText的编译(14122)
2. ASP.NET大文件上传(12208)
3. 利用Visual Assist X的模板功能提高编辑效率(8907)
4. IE无法打印一例(7708)
5. string与线程安全(5658)
6. Sasser(震荡波)蠕虫病毒肆虐(5192)
7. [烂笔头备忘录] 删除list元素(5148)
8. [HTTP 500 - 内部主机错误]的处理(4777)
9. 双SCSI硬盘安装小结(4596)
10. 将VC知识库.Text Blog 从.95升级到.96(4086)
评论排行榜
1. ASP.NET大文件上传(52)
2. Sasser(震荡波)蠕虫病毒肆虐(48)
3. IE无法打印一例(23)
4. string与线程安全(21)
5. .Text 使用经验:dotText的编译(17)
6. XMLHTTP与客户端无刷新更新数据(13)
7. IOCP代码片断一(12)
8. 传奇游戏服务器源码学习(12)
9. [烂笔头备忘录] 删除list元素(10)
10. 利用Visual Assist X的模板功能提高编辑效率(10)
VC知识库BLOG
首页
新随笔
联系
聚合
登录
随笔-113 文章-5 评论-212 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 阅读(5148)
评论(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键可以直接提交]