fork(1) download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct S
  8. {
  9. vector<int> v;
  10. string s;
  11. string s2;
  12. int i;
  13. char c;
  14. };
  15.  
  16. template<typename T, typename U>
  17. void print_all(const T* arr, size_t n, const U T::*member)
  18. {
  19. while (n > 0)
  20. {
  21. cout << arr->*member << "\n";
  22. ++arr;
  23. --n;
  24. }
  25. }
  26.  
  27. template<typename T, typename U, size_t N>
  28. void print_all(const T (&arr)[N], const U T::*member)
  29. {
  30. print_all(arr, N, member);
  31. }
  32.  
  33. int main(int, char**)
  34. {
  35. S my_array[3];
  36.  
  37. my_array[0].s = "a";
  38. my_array[1].s = "b";
  39. my_array[2].s = "c";
  40.  
  41. my_array[0].s2 = "d";
  42. my_array[1].s2 = "e";
  43. my_array[2].s2 = "f";
  44.  
  45. my_array[0].i = 1;
  46. my_array[1].i = 2;
  47. my_array[2].i = 3;
  48.  
  49. my_array[0].c = 'g';
  50. my_array[1].c = 'h';
  51. my_array[2].c = 'i';
  52.  
  53. print_all(my_array, &S::s);
  54. print_all(my_array, &S::s2);
  55. print_all(my_array, &S::c);
  56. print_all(my_array, &S::i);
  57.  
  58. return 0;
  59. }
  60.  
Success #stdin #stdout 0.01s 5544KB
stdin
Standard input is empty
stdout
a
b
c
d
e
f
g
h
i
1
2
3