相关疑难解决方法(0)

C++/C++ 11中的函数组合

我目前正在编写一些需要大量函数组合的C++ 11中的加密算法.我必须处理两种类型的构图:

  1. 自己编写一个函数可变次数.在数学上,对于某个函数F,F ^ n(x)=(F ^ {n-1} o F)(x)= F ^ {n-1}(F(x)).

  2. 一起组合不同的功能.例如,对于相同类型的一些函数f,g,h,i,j和k,我将具有f(g(h(i(j(k(x)))))).

就我而言,我使用的是F的以下定义:

const std::vector<uint8_t> F(const std::vector<uint8_t> &x);
Run Code Online (Sandbox Code Playgroud)

我想自己组合这个功能n次.我已经以一种简单的递归方式实现了组合,它工作正常:

const std::vector<uint8_t> compose(const uint8_t n, const std::vector<uint8_t> &x)
{
    if(n > 1)
       return compose(n-1, F(x));

    return F(x);
}
Run Code Online (Sandbox Code Playgroud)

对于这种情况,是否有一种更有效的方法来使用c ++ 11实现此组合但不使用BOOST?如果可能的话,使用这个表格会很棒:

answer = compose<4>(F)(x); // Same as 'answer = F^4(x) = F(F(F(F(x))))'
Run Code Online (Sandbox Code Playgroud)

对于第二种情况,我想实现可变数量的函数的组合.对于给定的一组函数F0,F1,...,Fn具有与F相同的定义,是否有一种有效且合适的方法来组合它们,其中n是可变的?我认为可变参数模板在这里很有用,但在这种情况下我不知道如何使用它们.

谢谢你的帮助.

c++ function-composition c++11

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

c++11 ×1

function-composition ×1