У меня есть массив структур, которые содержат несколько переменных:
struct test_case {
const int input1;
//...
const int output;
};
test_case tc[] = {
{0, /**/ 1},
// ...
{99, /**/ 17}
};
int tc_size = sizeof(tc) / sizeof(*tc);
и я хочу извлечь вектор из output
s, чтобы я мог сравнить их с другим массивом через 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());
но, похоже, я смогу сделать это без функтора / структуры для каждого типа.
Есть ли более быстрый способ извлечь вектор / массив из одной переменной из структуры? Я пытался использовать boost :: lambda, но это не сработало:
std::transform(test_cases,
test_cases + tc_size,
back_inserter(output_vector),
_1.output);
Очевидно, operator.()
нельзя использовать с лямбда-переменными ... что мне использовать? повышение :: BIND?