スポンサーリンク
構造体の配列から特定の要素だけをまとめた配列を作成する。
#include <vector> #include <string> struct test { int a; float b; std::string c; };
template <typename StructT, typename MemberT> std::vector<MemberT> column(const std::vector<StructT>& src, MemberT StructT::* member) { std::vector<MemberT> result; result.reserve(src.size()); for (const auto& v : src) { result.push_back(v.*member); } return result; }
int main() { std::vector<test> vec = { {1, 1.1f, "one"}, {2, 2.2f, "two"}, {3, 3.3f, "three"} }; std::vector<float> b_values = column(vec, &test::b); for (float b : b_values) { printf("%f\n", b); } return 0; }
メンバへのポインタを初めて使った。