マップとマルチマップ、およびキーと値を混同しているように見えます。
キー「1」を値「(2,3)」および「(4,5)」にマップするマップが必要な場合は、次のようにします。
multimap<int,pair<int,int>> myMap { {1,{2,3}}, {1,{4,5}} };
またはC++03の場合:
multimap<int,pair<int,int> > myMap;
myMap.insert(make_pair(1,make_pair(2,3)));
myMap.insert(make_pair(1,make_pair(4,5)));
マップ上で反復する場合、各アイテムはペアを参照します。ペアの最初のアイテムがキーで、2番目のアイテムが値です。
for(auto &i : myMap) {
std::cout << "Key: " << i->first
<< " Value: (" << i->second.first << ',' << i->second.second << ")\n";
}
またはC++03で
for(multimap<int,pair<int,int> >::const_iterator i(myMap.begin()),end(myMap.end()); i!=end; ++i) {
std::cout << "Key: " << i->first << " Value: (" << i->second.first << ',' << i->second.second << ")\n";
}
これは印刷されます:
Key: 1 Value: (2,3)
Key: 1 Value: (4,5)