вы можете сделать это: создать набор, чтобы избавиться от дубликатов, а затем найти частоту каждого элемента набора в векторе, с этим результатом создать пару (что-то вроде int, int) pu sh the создайте пару в векторе и, наконец, отсортируйте ее, используя собственный предикат:
теперь для верхнего x вы можете сделать a для l oop или просто изменить размер вектора, если вы уверены, каковы последствия этого.
std::vector<int> numbers{32, 32, 32, 12, 12, 11, 11, 11, 9};
std::set<int> mySet(numbers.begin(), numbers.end());
std::vector<std::pair<int, int>> result{};
for(const auto& x : mySet)
{
result.push_back(std::make_pair(x , std::count(numbers.begin(), numbers.end(), x)));
}
std::sort(result.begin(), result.end(), [](const std::pair<int, int>& a, const std::pair<int, int>& b){return (b.second < a.second);});
//result.resize(3);
std::cout << "Top: " << std::endl;
for(const auto& x : result)
{
std::cout << x.first << ':' << x.second << std::endl;
}
результат будет:
Вверх: 11: 3 32: 3 12: 2 9: 1