13.3  辅助用仿函数

13.3 辅助用仿函数

仿函数的组合能力很重要,即可以从一些软件组件构造出另一些组件。最简单的仿函数可以构造出非常复杂的仿函数。一般而言,所有函数行为均可由仿函数的组合而实现。C++标准程序库不能提供足够的配接器来到达此境界。从理论上讲,组合型配接器的功能会更强大,其用途会更加广泛。

(1)f(g(elem))

这是一元组合函数最一般的形式。一元判断式被嵌套调用,g()的执行结果作为f()的参数。整个表达式的操作类似于一个一元判断式。

(2)f(g(lelem1,elem2))

两个元素elem1和elem2作为参数传递给二元判断式g()。其结果作为参数传给一元判断式f()。整个表达式类似于一个二元判断式。

(3)f(g(elem),h(elem))

参数elem作为参数被传递给两个不同的一元判断式g()和h(),两者的结果由二元判断式f()处理。此形式是以某种方法将单一参数“注射”至组合函数中,整个表达式类似于一个一元判断式。

(4)f(g(elem1),h(elem2))

此处参数elem1和elem2作为唯一参数传递给两个不同的一元判断式g()和h(),两个结果共同被二元判断式f()处理。整个表达式类似于一个二元判断式。

上述形式的配接器并没有被写入标准中,也没有标准的名称。SGISTL的实作版本中定义了两个名称,目前C++社群正在寻找上述类型所有配接器的通用表达方式。组合型仿函数配接器的可能表现方式见表13-2。

13-2 组合型仿函数配接器的可能表现方式

978-7-111-51399-5-Chapter13-21.jpg