#include <unordered_set>
#include <iostream>
 
struct someType{
    std::string name;
    int code;
};
 
int main() {
    auto hash = [](const someType& st){
        return std::hash<std::string>()(st.name) * 31 + std::hash<int>()(st.code);
    };
    auto equal = [](const someType& st1, const someType& st2){
        return st1.name == st2.name && st1.code == st2.code;
    };
    std::unordered_set<someType, decltype(hash), decltype(equal)> myset(8, hash, equal);
 
    myset.insert({ "aaa", 123 });
    myset.insert({ "bbb", 321 });
    myset.insert({ "ccc", 213 });
 
    for (auto const &st : myset)
        std::cout << st.name.c_str() << ", " << st.code << std::endl;
 
    return 0;
}
				I2luY2x1ZGUgPHVub3JkZXJlZF9zZXQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCBzb21lVHlwZXsKICAgIHN0ZDo6c3RyaW5nIG5hbWU7CiAgICBpbnQgY29kZTsKfTsKCmludCBtYWluKCkgewogICAgYXV0byBoYXNoID0gW10oY29uc3Qgc29tZVR5cGUmIHN0KXsKICAgICAgICByZXR1cm4gc3RkOjpoYXNoPHN0ZDo6c3RyaW5nPigpKHN0Lm5hbWUpICogMzEgKyBzdGQ6Omhhc2g8aW50PigpKHN0LmNvZGUpOwogICAgfTsKICAgIGF1dG8gZXF1YWwgPSBbXShjb25zdCBzb21lVHlwZSYgc3QxLCBjb25zdCBzb21lVHlwZSYgc3QyKXsKICAgICAgICByZXR1cm4gc3QxLm5hbWUgPT0gc3QyLm5hbWUgJiYgc3QxLmNvZGUgPT0gc3QyLmNvZGU7CiAgICB9OwogICAgc3RkOjp1bm9yZGVyZWRfc2V0PHNvbWVUeXBlLCBkZWNsdHlwZShoYXNoKSwgZGVjbHR5cGUoZXF1YWwpPiBteXNldCg4LCBoYXNoLCBlcXVhbCk7CiAgICAKICAgIG15c2V0Lmluc2VydCh7ICJhYWEiLCAxMjMgfSk7CiAgICBteXNldC5pbnNlcnQoeyAiYmJiIiwgMzIxIH0pOwogICAgbXlzZXQuaW5zZXJ0KHsgImNjYyIsIDIxMyB9KTsKCiAgICBmb3IgKGF1dG8gY29uc3QgJnN0IDogbXlzZXQpCiAgICAgICAgc3RkOjpjb3V0IDw8IHN0Lm5hbWUuY19zdHIoKSA8PCAiLCAiIDw8IHN0LmNvZGUgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9