#include <vector>
#include <string>
#include <iostream>
using namespace std;
struct S
{
vector<int> v;
string s;
string s2;
int i;
char c;
};
template<typename T, typename U>
void print_all(const T* arr, size_t n, const U T::*member)
{
while (n > 0)
{
cout << arr->*member << "\n";
++arr;
--n;
}
}
template<typename T, typename U, size_t N>
void print_all(const T (&arr)[N], const U T::*member)
{
print_all(arr, N, member);
}
int main(int, char**)
{
S my_array[3];
my_array[0].s = "a";
my_array[1].s = "b";
my_array[2].s = "c";
my_array[0].s2 = "d";
my_array[1].s2 = "e";
my_array[2].s2 = "f";
my_array[0].i = 1;
my_array[1].i = 2;
my_array[2].i = 3;
my_array[0].c = 'g';
my_array[1].c = 'h';
my_array[2].c = 'i';
print_all(my_array, &S::s);
print_all(my_array, &S::s2);
print_all(my_array, &S::c);
print_all(my_array, &S::i);
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBTCnsKICAgIHZlY3RvcjxpbnQ+IHY7CiAgICBzdHJpbmcgczsKICAgIHN0cmluZyBzMjsKICAgIGludCBpOwogICAgY2hhciBjOwp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4Kdm9pZCBwcmludF9hbGwoY29uc3QgVCogYXJyLCBzaXplX3QgbiwgY29uc3QgVSBUOjoqbWVtYmVyKQp7CiAgICB3aGlsZSAobiA+IDApCiAgICB7CiAgICAgICAgY291dCA8PCBhcnItPiptZW1iZXIgPDwgIlxuIjsKICAgICAgICArK2FycjsKICAgICAgICAtLW47CiAgICB9Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgp2b2lkIHByaW50X2FsbChjb25zdCBUICgmYXJyKVtOXSwgY29uc3QgVSBUOjoqbWVtYmVyKQp7CglwcmludF9hbGwoYXJyLCBOLCBtZW1iZXIpOwp9CgppbnQgbWFpbihpbnQsIGNoYXIqKikKewogICAgUyBteV9hcnJheVszXTsKCiAgICBteV9hcnJheVswXS5zID0gImEiOwogICAgbXlfYXJyYXlbMV0ucyA9ICJiIjsKICAgIG15X2FycmF5WzJdLnMgPSAiYyI7CgogICAgbXlfYXJyYXlbMF0uczIgPSAiZCI7CiAgICBteV9hcnJheVsxXS5zMiA9ICJlIjsKICAgIG15X2FycmF5WzJdLnMyID0gImYiOwoKICAgIG15X2FycmF5WzBdLmkgPSAxOwogICAgbXlfYXJyYXlbMV0uaSA9IDI7CiAgICBteV9hcnJheVsyXS5pID0gMzsKCiAgICBteV9hcnJheVswXS5jID0gJ2cnOwogICAgbXlfYXJyYXlbMV0uYyA9ICdoJzsKICAgIG15X2FycmF5WzJdLmMgPSAnaSc7CgogICAgcHJpbnRfYWxsKG15X2FycmF5LCAmUzo6cyk7CiAgICBwcmludF9hbGwobXlfYXJyYXksICZTOjpzMik7CglwcmludF9hbGwobXlfYXJyYXksICZTOjpjKTsKCXByaW50X2FsbChteV9hcnJheSwgJlM6OmkpOwoKICAgIHJldHVybiAwOwp9Cg==