fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. struct A
  6. {
  7. int x;
  8. double y;
  9. };
  10.  
  11. template <typename T, typename U>
  12. auto extract(const std::vector<T>& vec, U T::* member)
  13. {
  14. std::vector<U> result;
  15. result.reserve(vec.size());
  16. std::transform(
  17. std::begin(vec), std::end(vec), std::back_inserter(result),
  18. [member] (const T& val) { return val.*member; }
  19. );
  20. return result;
  21. }
  22.  
  23. int main() {
  24. std::vector<A> as{{10, 3.14}, {42, 1.618}};
  25. auto result = extract(as, &A::x);
  26. for (auto x : result)
  27. std::cout << x << std::endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 16056KB
stdin
Standard input is empty
stdout
10
42