在类中定义static函数有什么作用?还有仿函数有什么好处?能举个例子么?

Benny1 2004-02-23 11:18:42
最近在看STL里面有很多仿函数和static函数,不大明白啊。
仿函数的好处书上说有三点:
1,他比一般函数更灵巧,因为他拥有自己的状态。
2,每个仿函数都有其自身的类型。因此你可以将仿函数的类型当作template参数来传递,从而指定某种行为的模式。容器的类型也会因为防函数的不同而不同。
3,执行速度上,仿函数比函数指针更快。

class less_equal_ten {
public:
bool operator() ( int val )
{ return val <= 10; }
};
count_if( vec.begin(), vec.end(), less_equal_ten() );
======================================================

class less_equal_value {
public:
less_equal_value( int val ) : _val( val ) {}
bool operator() ( int val ) { return val <= _val; }
private:
int _val;
};
count_if( vec.begin(), vec.end(), less_equal_value( 25 ));
============================================================

template < int _val >
class less_equal_value {
public:
bool operator() ( int val ) { return val <= _val; }
};
count_if( vec.begin(), vec.end(), less_equal_value<25>() );
=======================================================
以上是primer中的几个例子,他们所表达的意思是否就是所谓的优点?但第三个优点,我们怎么才能知道呢?

...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧