как найти совпадающие значения в map?
не могли бы вы подсказать, как можно пройтись по контейнеру map, найти повторяющиеся значения и вывести их вместе с ключами, то есть [значение: ключи в которых значение совпало].
я создал мап, в котором тип ключа - char (то есть повторяющиеся значения исходника), тип значения - vector (здесь хранятся ключи, которые совпали)
в Итоге у меня ничего не работает: не сортирует, и не выводит, не знаю, что делать
не могли бы вы подсказать как можно это сделать? спасибо заранее
мой код
М-исходный мап/с - содержащий результаты
for (map <int, char>::iterator it = M.begin(); it != M.end(); it++)
{
c[it->second].push_back(it->first);
}
for (map <char, vector<int>>::iterator it = c[it->second].begin(); it != c[it->second].end(); it++)
{
if (it->second.size() <= 1)continue;
cout << "значение=" << it->first << ", " << " ключи:"<<it->second.size();
for (map <char, vector<int>>::iterator it = c.begin(); it != c.end(); it++)
{
cout << it->second << ", ";
}
cout << '\n';
Ответы (1 шт):
Автор решения: IR42
→ Ссылка
Заполняется c правильно, а вот обход и вывод неправильный
for (map<char, vector<int>>::iterator it_map = c.begin(); it_map != c.end(); it_map++) {
vector<int> &keys = it_map->second;
if (keys.size() <= 1) continue;
cout << "значение=" << it_map->first << ", " << " ключи: ";
for (vector<int>::iterator it_vec = keys.begin(); it_vec != keys.end(); it_vec++) {
cout << it_vec << ", ";
}
cout << '\n';
}
или гораздо проще через range-for
for (pair<char, vector<int>>& p: c) {
vector<int> &keys = p->second;
if (keys.size() <= 1) continue;
cout << "значение=" << p->first << ", " << " ключи: ";
for (int x: keys) {
cout << x << ", ";
}
cout << '\n';
}