Here is a solution(requires C++11).
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iterator>
using std::string;
using std::map;
using std::vector;
int main()
{
map<char, int> m = {{'a',5},{'b',3},{'c',4},{'d',2},{'e',6},{'f',1}};
vector<std::pair<char,int> > v{
std::make_move_iterator(m.begin()), std::make_move_iterator(m.end())};
std::sort(v.begin(), v.end(),
[](std::pair<char,int>& l, std::pair<char,int>& r) {
return l.second < r.second;});
vector<char> keys;
std::transform(v.begin(), v.end(),
std::back_inserter(keys), [](std::pair<char,int> & a){
return a.first;});
for(auto a : keys) {
std::cout << a << std::endl;
}
}
You can also run it at here