#include <vector>
#include <unordered_map>
#include <iostream>
int main() {
using Key = std::pair<int, void*>;
auto hash = [](const Key & k) {
return std::hash<int>()(k.first) * 31 + std::hash<void*>()(k.second);
};
std::unordered_map<Key, std::vector<int>, decltype(hash)> um(8, hash);
void *x, *y; x = &y; y = &x;
um[{1, x}] = { 1, 2, 3 };
um[{2, y}] = { 4, 5 };
for (auto const &mapItem : um)
{
std::cout << mapItem.first.first << ", " << mapItem.first.second << ":";
for (auto const &vecItem : mapItem.second)
std::cout << " " << vecItem;
std::cout << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmludCBtYWluKCkgewogICAgdXNpbmcgS2V5ID0gc3RkOjpwYWlyPGludCwgdm9pZCo+OwogICAgYXV0byBoYXNoID0gW10oY29uc3QgS2V5ICYgaykgewogICAgICAgIHJldHVybiBzdGQ6Omhhc2g8aW50PigpKGsuZmlyc3QpICogMzEgKyBzdGQ6Omhhc2g8dm9pZCo+KCkoay5zZWNvbmQpOwogICAgfTsKICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxLZXksIHN0ZDo6dmVjdG9yPGludD4sIGRlY2x0eXBlKGhhc2gpPiB1bSg4LCBoYXNoKTsKCiAgICB2b2lkICp4LCAqeTsgeCA9ICZ5OyB5ID0gJng7CiAgICB1bVt7MSwgeH1dID0geyAxLCAyLCAzIH07CiAgICB1bVt7MiwgeX1dID0geyA0LCA1IH07CgogICAgZm9yIChhdXRvIGNvbnN0ICZtYXBJdGVtIDogdW0pCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8IG1hcEl0ZW0uZmlyc3QuZmlyc3QgPDwgIiwgIiA8PCBtYXBJdGVtLmZpcnN0LnNlY29uZCA8PCAiOiI7CiAgICAgICAgZm9yIChhdXRvIGNvbnN0ICZ2ZWNJdGVtIDogbWFwSXRlbS5zZWNvbmQpCiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiICIgPDwgdmVjSXRlbTsKICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgfQoKCXJldHVybiAwOwp9