#include <map>
#include <string>
#include <tuple>
#include <iostream>
struct myStruct { int x, y; };
using Key = std::pair<std::string, std::string>;
namespace something
{
struct Compare
{
bool operator()(const Key& lhs, const Key& rhs) const
{
// do the required comparison here
return std::tie(lhs.first, lhs.second) < std::tie(rhs.first, rhs.second);
}
};
}
using myMap = std::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;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgbXlTdHJ1Y3QgeyAgaW50IHgsIHk7IH07CnVzaW5nIEtleSA9ICBzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjsKCm5hbWVzcGFjZSBzb21ldGhpbmcKewogICAgc3RydWN0IENvbXBhcmUKICAgIHsKICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgS2V5JiBsaHMsIGNvbnN0IEtleSYgcmhzKSBjb25zdAogICAgICAgIHsKICAgICAgICAgICAgLy8gZG8gdGhlIHJlcXVpcmVkIGNvbXBhcmlzb24gaGVyZQogICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUobGhzLmZpcnN0LCBsaHMuc2Vjb25kKSA8IHN0ZDo6dGllKHJocy5maXJzdCwgcmhzLnNlY29uZCk7CiAgICAgICAgfQogICAgfTsKfQp1c2luZyBteU1hcCA9IHN0ZDo6bWFwPEtleSwgbXlTdHJ1Y3QsIHNvbWV0aGluZzo6Q29tcGFyZT47CgppbnQgbWFpbigpCnsKCW15TWFwIG1wID0KCXsKCQl7IHsgIm5hbWUxIiwgIm5hbWUyIiB9LHsgMyw0IH0gfSwKCQl7IHsgImFhbWUxIiwgIm5hbWUyIiB9LHsgOCw0IH0gfSwKCQl7IHN0ZDo6bWFrZV9wYWlyKCJmYW1lMSIsICJuYW1lMiIpLHsgMiw0IH0gfSwgLy8gb3IgbWFrZSBwYWlyCgkJeyBzdGQ6Om1ha2VfcGFpcigiZmFtZTEiLCAiYmFtZTIiKSx7IDEsMiB9IH0KCX07CgoJZm9yKGNvbnN0IGF1dG8mIGl0OiBtcCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgaXQuZmlyc3QuZmlyc3QgPDwgIiAiIDw8IGl0LmZpcnN0LnNlY29uZCA8PCAiICIKICAgICAgICAgICAgICAgICA8PCBpdC5zZWNvbmQueCA8PCAiICIgPDwgaXQuc2Vjb25kLnkgPDwgc3RkOjplbmRsOwogICAgfQoKCXJldHVybiAwOwp9Cg==