#include <unordered_map>
#include <iostream>

int main() {
    using Vote = std::pair<std::string, std::string>;
    auto hash = [](const Vote& v){
        return std::hash<std::string>()(v.first) * 31 + std::hash<std::string>()(v.second);
    };
    using Unordered_map = std::unordered_map<Vote, int, decltype(hash)>;
    Unordered_map um(8, hash);

    um.insert({ { "John", "Miller" }, 1 });
    um.insert({ { "Jill", "Samson" }, 2 });
    um.insert({ { "Jane", "Decker" }, 3 });

    for (auto const &v : um)
        std::cout << v.first.first.c_str() << " " << v.first.second.c_str() << ", " << v.second << std::endl;

	return 0;
}