13.3.1  一元组合函数配接器

13.3.1 一元组合函数配接器

最基本的组合型函数配接器是SGISTL实例版本的一部分。本小节首先以compose_f_gx进行嵌套计算来演示组合型仿函数的使用方法。最简单也是最基本的组合型仿函数配接器是将某一元运算结果作为另一个一元运算的输入,仅仅是嵌套调用两个一元仿函数,详见例13-6。

例13-6

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

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

例13-6的执行结果为:

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

在例13-6中,当执行语句transform()时,参数compose_f_gx的第二个参数优先被执行,即对于向量序列vt,其中的每个元素均先增加10,之后“和”再乘以5。例如,对于第一个元素“1”,运算规则是:(1+10)×5=55。

下面以compose_f_gx_hx组合两个“运作规则”为例,使用例13-7来说明该规则的使用方法。这可能是最重要的一个组合型函数配接器,它允许将两个准则加以逻辑组合,形成单一准则。在表13-2中,SGISTL实作版本称之为compose2,详见例13-7。

例13-7

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

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

例13-7的执行结果为:

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

其中,算法remove_if()中的第三个参数是由仿compose_f_gx_hx()函数来实现的。此仿compose_f_gx_hx()函数包含3个参数。对于例13-7,该仿函数确定的条件是:大于4并且小于7的元素。所以,程序执行完毕之后,输出向量vt,仅剩余7个元素。向量中的元素“5”和“6”被删除了。