#include <unordered_map>
#include <string>
#include <tuple>
#include <functional>
#include <cstddef>
#include <iostream>
struct myStruct
{
int x;
int y;
};
using Key = std::pair<std::string, std::string>;
namespace something
{
struct Compare
{
std::size_t operator()(const Key& string_pair) const
{
// just to demonstrate the comparison.
return std::hash<std::string>{}(string_pair.first) ^
std::hash<std::string>{}(string_pair.second);
}
};
}
using myMap = std::unordered_map<Key, myStruct, something::Compare>;
int main()
{
myMap mp =
{
{ { "name1", "name2" },{ 3,4 } },
{ { "aame1", "name2" },{ 8,4 } },
{ std::make_pair("fame1", "name2"),{ 2,4 } }, // or make pair
{ std::make_pair("fame1", "bame2"),{ 1,2 } }
};
for(const auto& it: mp)
{
std::cout << it.first.first << " " << it.first.second << " "
<< it.second.x << " " << it.second.y << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx0dXBsZT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxjc3RkZGVmPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgbXlTdHJ1Y3QKewoJaW50IHg7CglpbnQgeTsKfTsKdXNpbmcgS2V5ID0gc3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz47Cm5hbWVzcGFjZSBzb21ldGhpbmcKewoJc3RydWN0IENvbXBhcmUKCXsKCQlzdGQ6OnNpemVfdCBvcGVyYXRvcigpKGNvbnN0IEtleSYgc3RyaW5nX3BhaXIpIGNvbnN0CgkJewoJCSAgICAvLyBqdXN0IHRvIGRlbW9uc3RyYXRlIHRoZSBjb21wYXJpc29uLgoJCQlyZXR1cm4gc3RkOjpoYXNoPHN0ZDo6c3RyaW5nPnt9KHN0cmluZ19wYWlyLmZpcnN0KSBeCiAgICAgICAgICAgICAgICAgICAgc3RkOjpoYXNoPHN0ZDo6c3RyaW5nPnt9KHN0cmluZ19wYWlyLnNlY29uZCk7CgkJfQoJfTsKfQp1c2luZyBteU1hcCA9IHN0ZDo6dW5vcmRlcmVkX21hcDxLZXksIG15U3RydWN0LCBzb21ldGhpbmc6OkNvbXBhcmU+OwoKaW50IG1haW4oKQp7CglteU1hcCBtcCA9Cgl7CgkJeyB7ICJuYW1lMSIsICJuYW1lMiIgfSx7IDMsNCB9IH0sCgkJeyB7ICJhYW1lMSIsICJuYW1lMiIgfSx7IDgsNCB9IH0sCgkJeyBzdGQ6Om1ha2VfcGFpcigiZmFtZTEiLCAibmFtZTIiKSx7IDIsNCB9IH0sIC8vIG9yIG1ha2UgcGFpcgoJCXsgc3RkOjptYWtlX3BhaXIoImZhbWUxIiwgImJhbWUyIikseyAxLDIgfSB9Cgl9OwoKCWZvcihjb25zdCBhdXRvJiBpdDogbXApCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGl0LmZpcnN0LmZpcnN0IDw8ICIgIiA8PCBpdC5maXJzdC5zZWNvbmQgPDwgIiAiCiAgICAgICAgICAgICAgICAgPDwgaXQuc2Vjb25kLnggPDwgIiAiIDw8IGl0LnNlY29uZC55IDw8IHN0ZDo6ZW5kbDsKICAgIH0KCglyZXR1cm4gMDsKfQ==