#include <iostream>
#include <unordered_map>
#include <utility>
struct Hasher
{
int operator()(const std::pair<int, int>& p) const
{
return p.first ^ (p.second << 7) ^ (p.second >> 3);
}
};
int main()
{
std::unordered_map<std::pair<int,int>, float, Hasher> m =
{ { {1,3}, 2.3 },
{ {2,3}, 4.234 },
{ {3,5}, -2 },
};
// do a lookup
std::cout << m[std::make_pair(2,3)] << '\n';
// add more data
m[std::make_pair(65,73)] = 1.23;
// output everything
for (auto& x : m)
std::cout << x.first.first << ',' << x.first.second << ' '
<< x.second << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHV0aWxpdHk+CgpzdHJ1Y3QgSGFzaGVyCnsKICAgIGludCBvcGVyYXRvcigpKGNvbnN0IHN0ZDo6cGFpcjxpbnQsIGludD4mIHApIGNvbnN0CiAgICB7CiAgICAJcmV0dXJuIHAuZmlyc3QgXiAocC5zZWNvbmQgPDwgNykgXiAocC5zZWNvbmQgPj4gMyk7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKCXN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnBhaXI8aW50LGludD4sIGZsb2F0LCBIYXNoZXI+IG0gPQoJeyB7IHsxLDN9LCAyLjMgfSwKCSAgeyB7MiwzfSwgNC4yMzQgfSwKCSAgeyB7Myw1fSwgLTIgfSwKCX07CgkKCS8vIGRvIGEgbG9va3VwCglzdGQ6OmNvdXQgPDwgbVtzdGQ6Om1ha2VfcGFpcigyLDMpXSA8PCAnXG4nOwoJLy8gYWRkIG1vcmUgZGF0YQoJbVtzdGQ6Om1ha2VfcGFpcig2NSw3MyldID0gMS4yMzsKCS8vIG91dHB1dCBldmVyeXRoaW5nCglmb3IgKGF1dG8mIHggOiBtKQoJICAgIHN0ZDo6Y291dCA8PCB4LmZpcnN0LmZpcnN0IDw8ICcsJyA8PCB4LmZpcnN0LnNlY29uZCA8PCAnICcKCSAgICAgICAgPDwgeC5zZWNvbmQgPDwgJ1xuJzsKfQ==