Here is a simple solution:
#include <iostream>
#include <map>
#include <algorithm>
#include <string>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<int, size_t> counts;
std::map<std::string, int> m = {
{"XzbitYmay", 64},
{"Bruce Watson", 53},
{"Nim George", 53},
{"Lee Harry", 64},
{"Nim George", 59 }};
for(const auto& kvp : m) {
counts[kvp.second]++;
}
for(const auto& kvp: counts) {
if(kvp.second > 0)
std::cout << kvp.first << "->" << kvp.second << '\n';
}
return 0;
}
Live example here.