struct HASH{ size_t operator()(const pair<int,int>&x)const{ return hash<long long>()(((long long)x.first)^(((long long)x.second)<<32)); } }; unordered_map<pair<int,int>,int,HASH>mp; //In Function pass it as int foo(unordered_map<pair<int,int>,int,HASH> &mp);