#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
class Object {
public:
int x;
float y;
};
class getx_iter : public vector<Object>::iterator
{
public:
getx_iter(const vector<Object>::iterator &iter) : vector<Object>::iterator(iter) {}
int operator*() { return (*this)->x; }
};
int main() {
vector<Object> obj = { { 1,1.f },{ 2,2.f },{ 3,3.14f } };
vector<int> all_x(getx_iter(obj.begin()), getx_iter(obj.end()));
std::copy(all_x.begin(), all_x.end(), std::ostream_iterator<int>(std::cout, " "));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBPYmplY3QgewpwdWJsaWM6CglpbnQgeDsKCWZsb2F0IHk7Cn07CgpjbGFzcyBnZXR4X2l0ZXIgOiBwdWJsaWMgdmVjdG9yPE9iamVjdD46Oml0ZXJhdG9yCnsKcHVibGljOgoJZ2V0eF9pdGVyKGNvbnN0IHZlY3RvcjxPYmplY3Q+OjppdGVyYXRvciAmaXRlcikgOiB2ZWN0b3I8T2JqZWN0Pjo6aXRlcmF0b3IoaXRlcikge30KCWludCBvcGVyYXRvciooKSB7IHJldHVybiAoKnRoaXMpLT54OyB9Cn07CgppbnQgbWFpbigpIHsKCXZlY3RvcjxPYmplY3Q+IG9iaiA9IHsgeyAxLDEuZiB9LHsgMiwyLmYgfSx7IDMsMy4xNGYgfSB9OwoKCXZlY3RvcjxpbnQ+IGFsbF94KGdldHhfaXRlcihvYmouYmVnaW4oKSksIGdldHhfaXRlcihvYmouZW5kKCkpKTsKCglzdGQ6OmNvcHkoYWxsX3guYmVnaW4oKSwgYWxsX3guZW5kKCksIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxpbnQ+KHN0ZDo6Y291dCwgIiAiKSk7CglyZXR1cm4gMDsKfQ==