#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;
}