c++ - 测试每个订单中的每个功能组合

标签 c++ function permutation

我有一堆函数,a.process, b.process, c.process...,我们称它们为 a, b, c... 都以 std::string 作为参数并返回一个 std::string.

给定初始 std::string s,我想生成 ab 组合的所有可能输出c... 以任何顺序调用并给定 s 作为初始输入。

例如,我想计算a(s), b(s), c(s), a(b(s)), a(c(s)), b(a(s)), b(c(s )), c(a(s)), c(b(s)), a(b(c(s)))

我想我可以做一个函数来生成列表的每个排列,类似于 Python 的 itertools.permutations 但我这里有两个主要问题:

  • 我不只是想要每一个排列,我想要每一个顺序的每一个排列。

  • 更重要的是,我不知道如何像在 Python 中那样轻松地将函数存储在数组中。

我还需要每个可能的输出都带有生成它的函数组合,因此对于我上面给出的示例,我知道输出的顺序如下:"a", "b", "c", "ab", "ac", "ba"“bc”“ca”“cb”“abc”等。

我如何在 C++ 中实现它?

最佳答案

要在数组中存储函数,您需要使用 function pointers .像这样的事情会做:

typedef string (*t_fnPtr)(string);
t_fnPtr fnPtrArray[10]; //Initialize this with your functions

然后只需生成数组的所有组合并将其应用于字符串即可。看this question .

关于c++ - 测试每个订单中的每个功能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479302/

相关文章:

c++ - Rcpp 可以替换 R 中的 unif 函数吗?

c++ - 模板与 Action 层次结构

c++ - 在 header 中实现的隐式内联虚函数

algorithm - 在 n log n 时间内从排列构建二叉树

python - 如何从所有排列生成所有可能的组合?

c++ - 如何防止大于视口(viewport)的 Texture_2D 被缩放到 openGL 中的视口(viewport)

c++ - 只允许枚举的子集作为返回值 - 或如何让编译器提醒我?在 C++ 中

perl - 如何在 Perl 中迭代/取消引用子例程引用数组?

r - 使用自定义函数时 lapply 出现意外结果

algorithm - 洗牌列表,确保没有项目留在同一位置