Чтобы выгрузить информацию из std :: map в std :: vector, вы можете использовать конструктор std :: vector, который принимает два итератора.
std::vector<std::pair<K,V> > myVec(myMap.begin(), myMap.end());
Затем вы должны отсортировать его с помощью:
std::sort(myVec.begin(),myVec.end(),&myFunction);
myFunction
будет функцией, определенной с сигнатурой:
bool myFunction(std::pair<K,V> first, std::pair<K,V> second);
Вернет ли она значение true, если вы находитесь в правильном порядке (т.е. сначала должно быть перед вторым).Возвращайте false, когда они находятся в неправильном порядке (то есть секунда должна быть перед первой).
Кроме того, вы можете посмотреть на boost :: bimap , который выглядит более настроеннымк вашей проблеме.