как найти все повторяющиеся значения в контейнере map? c++
как найти все повторяющиеся значения в контейнере map? c++ вывести только повторяющиеся значения, их ключи и количество повторов
Ответы (1 шт):
Автор решения: Maggot
→ Ссылка
Заведите еще один мап
std::map<int, std::vector<int>>
Туда просто кладите значение, а в вектор ключи где они появляются
Вот пример кода:
#include <cstdlib>
#include <iostream>
#include <map>
#include <vector>
int main() {
std::map<int, int> m{{1, 1}, {2, 9}, {3, 1},
{4, 2}, {5, 2}, {6, 3}
};
std::map<int, std::vector<int>> ret{};
for(const auto& v : m) {
ret[v.second].push_back(v.first);
}
for(const auto& v : ret) {
if (v.second.size() > 1) {
std::cout << v.first << " : ";
for (const auto& vv : v.second) {
std::cout << vv << " ";
}
std::cout << std::endl;
}
}
return EXIT_SUCCESS;
}