Вы выбрали неправильный контейнер для своих требований, так как std::map
выполняет сортировку только по ключам.
Поэтому вы можете переключиться на использование std::vector<std::pair<int, int>>
, например:
#include <iostream>
#include <vector>
int main() {
std::vector<std::pair<int, int>> v;
v.emplace_back(11, 5);
v.emplace_back(3, 7);
v.emplace_back(1, 3);
std::sort(
std::begin(v), std::end(v),
[](auto&& lhs, auto&& rhs) {
return lhs.second > rhs.second;
}
);
for (auto const& i : v) {
std::cout << i.first << " " << i.second << std::endl;
}
}
, и результат будет:
3 7
11 5
1 3