同时使用多个仿函式(第一部分)

ZDNet软件频道 时间:2003-02-24 作者:BUILDER.COM |  我要评论()
本文关键词:cpptips
当处理标准模板库(Standard Template Library ,STL)运算规则时,对于给定的容器/范围,开发者可能会发现有必要同时执行多个功能。
当处理标准模板库(Standard Template Library ,STL)运算规则时,对于给定的容器/范围,开发者可能会发现有必要同时执行多个功能。

例如,你可能想把一个范围(range)同时输出到控制台和一个日志文件中:你可以用类似下面的方法实现这个功能:

上面的代码是没有可重用性的。它同时完成了两件事:打印到控制台并记录到文件。在这以后,你需要同时做这两件事情的情况几乎不会再发生了,不过,很可能会再次碰到做这两件事中的某一件的情况。

你可以像下面的代码那样把上述两个任务分解到各自的类:

那么,日后当你希望同时做多个任务时,可以调用mutli_func函数,如下所示:

在调用mutli_func函数时,你可以使用多达六个仿函式(函数对象,functor)。每个仿函式必须是可修改的、一元变量的函数。换句话说,每个仿函式必须包含下面的typedef:

  • argument_type:函数的参数
  • result_type:函数的返回值

获得所需的typedef最简单的方法就是继承(直接或者间接)std::unary_function(如log_to_console/log_to_file中仿函式所示)。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134