0

ラムダ式はよくわかりません。構造体「brute」を取り入れたリストを作成しました。

typedef struct brute{
int entry;
string secWord;
string secHex;
}decrypt;

typedef list<brute*>Unsolved;

次に、for_eachを使用してリストを反復処理しようとします。

char combo[] = {'a','a','b','c');
std::for_each(unsolved.begin(), unsolved.end(),[&combo](int i )
{

});

[&combo}は私がキャプチャしようとしているものです。3つの質問があります:「inti」はリストのイテレータですか?未解決のリスト内にあるメンバーにアクセスするにはどうすればよいですか?最後に、戻り値をchar []にする必要があることを定義する必要がありますか?

4

1 に答える 1

3

std::for_eachbrute*またはbrute*&、何らかの形式の単項述語を期待します

T foo(brute*);

するだろう。戻り値は無視されます。したがってfor_each、ラムダを使用した呼び出しは次の形式になります。

std::array<char, 4> combo{'a','a','b','c'};
std::for_each(unsolved.begin(), unsolved.end(),[&combo](brute*& b) { .... } );

ここではstd::array、プレーン配列よりもコピー/代入のセマンティクスが単純であるため、を使用しました。

だから、質問に答えるために、

「inti」はリストのイテレータですか?

いいえ

未解決のリスト内にあるメンバーにアクセスするにはどうすればよいですか?

例に示すように

最後に、戻り値をchar []にする必要があることを定義する必要がありますか?

戻り値は無視されます。それが必要な場合は、別のアルゴリズムが必要です。

于 2013-03-06T21:48:25.990 に答える