как найти совпадающие значения в 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';
}
→ Ссылка