複数の変数を含む構造体の配列があります。
struct test_case {
const int input1;
//...
const int output;
};
test_case tc[] = {
{0, /**/ 1},
// ...
{99, /**/ 17}
};
int tc_size = sizeof(tc) / sizeof(*tc);
sのベクトルを抽出して、output
を介して別の配列と比較できるようにしBOOST_CHECK_EQUAL_COLLECTIONS
ます。
私はこれを思いついた:
struct extract_output {
int operator()(test_t &t) {
return t.output;
}
}
std::vector<int> output_vector;
std::transform(test_cases,
test_cases + tc_size,
back_inserter(output_vector),
extract_output());
しかし、タイプごとにファンクター/構造体がなくてもこれを実行できるはずです。
構造体から1つの変数のベクトル/配列を抽出するより速い方法はありますか?boost :: lambdaを使用してみましたが、機能しませんでした:
std::transform(test_cases,
test_cases + tc_size,
back_inserter(output_vector),
_1.output);
どうやらoperator.()
ラムダ変数では使用できません...何を使用すればよいですか?boost :: bind?