我有一堆函数,a.process
, b.process
, c.process
...,我们称它们为 a
, b
, c
... 都以 std::string
作为参数并返回一个 std::string
.
给定初始 std::string s
,我想生成 a
、b
、 组合的所有可能输出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/