Может быть альтернативный подход для получения двух значений на ключ, особенно для случаев, когда большинство элементов карты имеют два значения на ключ. Соединяя два значения для ключа, как упомянуто в этой ссылке :
std::map<std::string, std::pair<std::int, int> > myMap2
используйте его в функции как:
#include<iostream>
#include<map>
#include<iterator>
using namespace std;
int main(){
map<string,pair<int,int>>mp;
mp.insert(pair<string,pair<int,int>>("ab",make_pair(50,7)));
mp.insert(pair<string,pair<int,int>>("cd",make_pair(51,8)));
map<string,pair<int,int>>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second.first<<" "<<it->second.second<<" ";
return 0;
}