fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template<typename ElementType, typename MemberType>
  5. std::vector<MemberType> CopyAllOfMember(const std::vector<ElementType> &container, MemberType ElementType::*ptrToMember)
  6. {
  7. std::vector<MemberType> values(container.size());
  8.  
  9. size_t index = 0;
  10. for(const ElementType &element : container)
  11. {
  12. values[index++] = (element.*ptrToMember);
  13. }
  14.  
  15. return values;
  16. }
  17.  
  18.  
  19. struct TestStruct
  20. {
  21. bool dummyA;
  22. int value;
  23. float dummyB;
  24. };
  25.  
  26.  
  27. int main()
  28. {
  29. std::vector<TestStruct> container = {{true, 1, 0.0f}, {true, 2, 0.0f}, {true, 3, 0.0f} };
  30.  
  31. std::vector<int> justTheInts = CopyAllOfMember(container, &TestStruct::value);
  32.  
  33. for(int value : justTheInts)
  34. {
  35. std::cout << value << " ";
  36. }
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
1 2 3