に、私は、機能の束を持っているa.process
、b.process
、c.process
...、のa
それらを呼びましょう、b
、c
...。テスト機能のすべての組み合わせをすべての注文
は初期std::string s
を考えると、私は、任意の順序で呼び出されると、最初の入力としてs
与えa
、b
、c
の組み合わせのあらゆる可能な出力を生成したいです...。
ので、たとえば、私はなど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
のようなものが、私はここでは2つの主要な問題があります。
を私はすべての順列をしたくありません私はすべての順番ですべての順列を欲しい。
さらに重要なのは、Pythonで簡単にやっているような配列に関数を格納する方法について私は考えていません。
また、私は、可能な各出力は、私は上記の与え例えば、私は、出力は次の順序であることを知っているであろうように、それを生成した機能の組み合わせが付属していることが必要です。"a"
、"b"
、"c"
、"ab"
、など"ac"
、"ba"
、"bc"
、"ca"
、"cb"
、、
は、どのように私はC++でそれを実装するだろうか?
を生成しないのですか?私は関数のベクトルを '{class1.a、class2.a、class3.a}'で初期化することはできませんが、私の関数はインスタンスの初期化によって異なるので、 'CLASS1 :: a'を使うことはできません。 – Yksuh
'Fn'を' std :: function 'に変更し、' [&](std :: string s){return class1.a(s);} 'で初期化します' 。 [ラムダの詳細](http://en.cppreference.com/w/cpp/language/lambda) –