#include <iostream>
#include <unordered_set>
struct B
{
int x, y;
};
class A
{
struct hash
{
std::size_t operator()( int const a ) const
{
return std::hash<int>()( a );
}
};
struct equal_to
{
std::size_t operator()( int const a, int const b ) const
{
return std::equal_to<int>()( a, b );
}
};
public:
std::unordered_set< int, hash, equal_to > set;
void push( const B& b )
{
set.insert( b.x );
}
};
int main(int argc, char**)
{
A a;
a.push({4, 7});
a.push({15, 7});
a.push({15, 7});
a.push({101, 10});
for (auto i: a.set) std::cout << i << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCnN0cnVjdCBCCnsKICAgaW50IHgsIHk7Cn07CgpjbGFzcyBBCnsKICAgc3RydWN0IGhhc2gKICAgewogICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKCBpbnQgY29uc3QgYSApIGNvbnN0CiAgICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6aGFzaDxpbnQ+KCkoIGEgKTsKICAgICAgfQogICB9OwoKICAgc3RydWN0IGVxdWFsX3RvCiAgIHsKICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSggaW50IGNvbnN0IGEsIGludCBjb25zdCBiICkgY29uc3QKICAgICAgewogICAgICAgICByZXR1cm4gc3RkOjplcXVhbF90bzxpbnQ+KCkoIGEsIGIgKTsKICAgICAgfQogICB9OwoKICAgcHVibGljOgogICAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8IGludCwgaGFzaCwgZXF1YWxfdG8gPiBzZXQ7CiAgICAgIHZvaWQgcHVzaCggY29uc3QgQiYgYiApCiAgICAgIHsKICAgICAgICAgc2V0Lmluc2VydCggYi54ICk7CiAgICAgIH0KfTsKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKikKewogICAgQSBhOwogICAgYS5wdXNoKHs0LCA3fSk7CiAgICBhLnB1c2goezE1LCA3fSk7CiAgICBhLnB1c2goezE1LCA3fSk7CiAgICBhLnB1c2goezEwMSwgMTB9KTsKCiAgICBmb3IgKGF1dG8gaTogYS5zZXQpIHN0ZDo6Y291dCA8PCBpIDw8ICJcbiI7Cn0K