不过是用Ms Tools的一个民工..
人恒过,然后能改。困于心,衡于虑,而后作。
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
mem_fun And mem_fun_ref
怎么对容器中的所有对象都进行同一个操作?我们可能首先想到的是用循环来实现。
比如有如下的一个类:
class
ClxECS
{
public
:
int
DoSomething()
{
//
这里以输出一句话来代替具体的操作
cout
<<
"
Output from method DoSomething!
"
<<
endl;
return
0
;
}
;
}
;
现在定义如下一个vector:
vector
<
ClxECS
*>
vECS;
for
(
int
i
=
0
; i
<
13
; i
++
)
{
ClxECS
*
pECS
=
new
ClxECS;
vECS.push_back(pECS);
}
for
(
int
i
=
0
; i
<
vECS.size(); i
++
)
vECS.at(i)
->
DoSomething();
当然,我们也可以用iterator:
for
(vector
<
ClxECS
*>
::iterator it
=
vECS.begin(); it
!=
vECS.end();
++
it)
(
*
it)
->
DoSomething();
但是,有很多C++的高手和牛人们都会给我们一个忠告,那就是:在处理STL里面的容器的时候,尽量不要自己写循环。
那么,我们就只好用STL算法里面的for_each了。
首先,添加如下一个函数:
int
DoSomething(ClxECS
*
pECS)
{
return
pECS
->
DoSomething();
}
然后就可以用for_each来实现我们想要的功能:
for_each(vECS.begin(), vECS.end(),
&
DoSomething);
说了半天,似乎跟mem_fun和mem_fun_ref没有什么关系。其实,说那么多都是为了引出mem_fun和mem_fun_ref。在用for_each的时候,如果我们不添加上面的那个函数,该怎么办呢?
这个时候就该mem_fun和mem_fun_ref隆重登场了。用如下这一行代码就行了:
for_each(vECS.begin(), vECS.end(), mem_fun(
&
ClxECS::DoSomething));
不用我多说,大家应该已经明白mem_fun是干什么和该怎么用的了。
mem_fun_ref的作用和用法跟mem_fun一样,唯一的不同就是:当容器中存放的是对象实体的时候用mem_fun_ref,当容器中存放的是对象的指针的时候用mem_fun。
[转载内容]
发表于 2008-07-04 09:13
IssAc
阅读(140)
评论(0)
编辑
收藏
引用
所属分类:
STL
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
随笔:5 文章:28 评论:1 引用:0
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
公告
Blog里的内容如果没有注明为转载,就是原创文章,需要转载的朋友请注明出处。文章中如有错误,请指出。转载内容如果有侵权行为,请与我联系,----issac_asimoy@qq.com。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(5)
Heart(3)
(rss)
Interesting(2)
(rss)
UML
(rss)
随笔档案
(5)
2008年8月 (1)
2008年7月 (3)
2008年6月 (1)
文章分类
(28)
Boost
(rss)
C/C++(4)
(rss)
Data Structure and Algorithm(2)
(rss)
Disquisition
(rss)
Exam Problem(5)
(rss)
Exercise(6)
(rss)
IDE and Tools(1)
(rss)
Mfc(4)
(rss)
Readset
(rss)
Sdk(5)
(rss)
STL(1)
(rss)
文章档案
(28)
2008年8月 (5)
2008年7月 (15)
2008年6月 (8)
相册
Temp
My World
≈靜侯輪囘≈
Study Web
最新随笔
1. 个人收藏的编程下载资源全部公布
2. 不同地区技术人才需求量的统计和分析
3. 失意时须看的十大图片《组图》
4. 作为男人你必须知道的几件事情
5. 逆境轉心境
搜索
积分与排名
积分 - 7661
排名 - 1311
最新评论
1. re: 作为男人你必须知道的几件事情
这个怎么看 都是做个好人的 基本准则啊!
--Corner Zhang
阅读排行榜
1. 个人收藏的编程下载资源全部公布(456)
2. 作为男人你必须知道的几件事情(419)
3. 不同地区技术人才需求量的统计和分析(342)
4. 逆境轉心境(324)
5. 失意时须看的十大图片《组图》(281)
评论排行榜
1. 作为男人你必须知道的几件事情(1)
2. 失意时须看的十大图片《组图》(0)
3. 不同地区技术人才需求量的统计和分析(0)
4. 个人收藏的编程下载资源全部公布(0)
5. 逆境轉心境(0)