#include #include #include #include #include #include #include using std::cin; using std::cout; using std::endl; using std::string; using std::vector; using std::unordered_map; using std::pair; namespace std { template<> class hash< pair< string, string > > { public: size_t operator()(const pair< string, string >& p) const { return p.first[0] + p.second[0]; } }; } int main(int argc, char **argv) { // (Skidmore, Yale) -> 1 unordered_map< pair< string, string >, int> counts; counts[std::make_pair(std::string{"Skidmore"}, std::string{"Yale"})] = 1; counts[std::make_pair(std::string{"Notre Dame"}, std::string{"Virginia"})] = 2; for (auto& entry : counts) { // entry is a pair of (pairs of strings and ints) cout << entry.first.first << " " << entry.first.second << " " << entry.second << endl; } return 0; }