#include <iostream>
#include <map>
int main()
{
// The value_type of a map is pair<const Key, T>.
// To initialize a map an initializer list
// of pair<Key, T> objects must be specified.
// To initialize a pair:
//
std::pair<int, int> p{9, 10};
std::cout << "pair:\n (" << p.first << ", " << p.second << ")\n\n";
// To initialize a simple map (no nesting)
// with value_type of pair<int, int>:
//
std::map<int, int> simple_map
{ // K V
{ 5, 6 },
{ 7, 8 }
};
std::cout << "simple_map:\n";
for (auto const& i: simple_map)
{
std::cout << " (" << i.first << ", " << i.second << ")\n";
}
std::cout << "\n";
// To initialize a complex map (with nesting)
// with value_type of pair<const int, map<int, int>>
//
const std::map<int, std::map<int, int>> complex_map
{ // K V
// k v
{ 1, { {3, 4},
{5, 6} }
},
{ 2, { {7, 8},
{8, 8},
{9, 0} }
}
};
std::cout << "complex_map:\n";
for (auto const& mi: complex_map)
{
std::cout << " (" << mi.first << ", ";
for (auto const& p: mi.second)
{
std::cout << '(' << p.first << ", " << p.second << ')';
}
std::cout << ")\n";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKaW50IG1haW4oKQp7CiAgICAvLyBUaGUgdmFsdWVfdHlwZSBvZiBhIG1hcCBpcyBwYWlyPGNvbnN0IEtleSwgVD4uCiAgICAvLyBUbyBpbml0aWFsaXplIGEgbWFwIGFuIGluaXRpYWxpemVyIGxpc3QKICAgIC8vIG9mIHBhaXI8S2V5LCBUPiBvYmplY3RzIG11c3QgYmUgc3BlY2lmaWVkLgoKICAgIC8vIFRvIGluaXRpYWxpemUgYSBwYWlyOgogICAgLy8KICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gcHs5LCAxMH07CiAgICBzdGQ6OmNvdXQgPDwgInBhaXI6XG4gICgiIDw8IHAuZmlyc3QgPDwgIiwgIiA8PCBwLnNlY29uZCA8PCAiKVxuXG4iOwoKICAgIC8vIFRvIGluaXRpYWxpemUgYSBzaW1wbGUgbWFwIChubyBuZXN0aW5nKQogICAgLy8gd2l0aCB2YWx1ZV90eXBlIG9mIHBhaXI8aW50LCBpbnQ+OgogICAgLy8KICAgIHN0ZDo6bWFwPGludCwgaW50PiBzaW1wbGVfbWFwCiAgICB7ICAvLyBLICBWCiAgICAgICAgeyA1LCA2IH0sCiAgICAgICAgeyA3LCA4IH0KICAgIH07CiAgICBzdGQ6OmNvdXQgPDwgInNpbXBsZV9tYXA6XG4iOwogICAgZm9yIChhdXRvIGNvbnN0JiBpOiBzaW1wbGVfbWFwKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiICAoIiA8PCBpLmZpcnN0IDw8ICIsICIgPDwgaS5zZWNvbmQgPDwgIilcbiI7CiAgICB9CiAgICBzdGQ6OmNvdXQgPDwgIlxuIjsKCiAgICAvLyBUbyBpbml0aWFsaXplIGEgY29tcGxleCBtYXAgKHdpdGggbmVzdGluZykKICAgIC8vIHdpdGggdmFsdWVfdHlwZSBvZiBwYWlyPGNvbnN0IGludCwgbWFwPGludCwgaW50Pj4KICAgIC8vCiAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIHN0ZDo6bWFwPGludCwgaW50Pj4gY29tcGxleF9tYXAKICAgIHsgIC8vIEsgICAgICAgVgogICAgICAgLy8gICAgICAgayAgdgogICAgICAgIHsgMSwgeyB7MywgNH0sCiAgICAgICAgICAgICAgIHs1LCA2fSB9CiAgICAgICAgfSwKICAgICAgICB7IDIsIHsgezcsIDh9LAogICAgICAgICAgICAgICB7OCwgOH0sCiAgICAgICAgICAgICAgIHs5LCAwfSB9CiAgICAgICAgfQogICAgfTsKCiAgICBzdGQ6OmNvdXQgPDwgImNvbXBsZXhfbWFwOlxuIjsKICAgIGZvciAoYXV0byBjb25zdCYgbWk6IGNvbXBsZXhfbWFwKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiICAoIiA8PCBtaS5maXJzdCA8PCAiLCAiOwogICAgICAgIGZvciAoYXV0byBjb25zdCYgcDogbWkuc2Vjb25kKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICcoJyA8PCBwLmZpcnN0IDw8ICIsICIgPDwgcC5zZWNvbmQgPDwgJyknOwogICAgICAgIH0KICAgICAgICBzdGQ6OmNvdXQgPDwgIilcbiI7CiAgICB9Cn0K