мультикарта может уменьшить использование памяти:
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
int main() {
std::vector<int> v = { 1, 2, 4, 8, 4, 9, 2, 0, 9, 4, 2 };
std::for_each(v.begin(), v.end(), [](int i) { std::cout << i << " "; });
std::cout << std::endl;
std::map<int, size_t> m;
std::multimap<size_t, int> mm;
std::for_each(v.begin(), v.end(), [&](int i) { m[i]++; });
std::for_each(m.begin(), m.end(), [&](std::pair<int, size_t> p) { mm.insert(std::pair<size_t, int>(p.second, p.first)); });
std::for_each(mm.rbegin(), mm.rend(), [](std::pair<size_t, int> p) { std::cout << p.second << " " << p.first << " "; });
std::cout << std::endl;
return 0;
}