посчитать количество повторений одинаковых элементов в map

Есть словарь map<pair<string, string>, string> triple_combo. Как посчитать количество повторений одинаковых в нем элементов? Одинаковые элементы, это я имею ввиду в соответствии ключ - значение, ключ -значение и тд. Сколько раз эти пары повторяются?


Ответы (2 шт):

Автор решения: mr NAE

По всей видимости, вопрос является следствием предыдущих Ваших вопросов: Объединить пару элементов из одного вектора с другим элементом и Разбить элементы вектора по парам

Фактически, Вам нужна гистограмма пар от пары строк и строки std::pair<std::pair<std::string, std::string>, std::string> (либо это всё можно запихать в массив строк или кортеж). То есть:

std::map<std::pair<std::pair<std::string, std::string>, std::string>, int> histogramm;
...
++histogramm[std::make_pair(pair, item)];

Просто замените set на map в моём ответе

→ Ссылка
Автор решения: Alex

Воспользовался ответом @MBo в другом вопросе. По сути, посчитать просто, но для этого пришлось изменить словарь, сделав <pair<string, string>, string> ключом и добавив словарь еще и значение в виде int, куда записывало количество повторений.

p = make_tuple(pair, string)

if (triple_combo.find(p) == triple_combo.end())
                    triple_combo[p] = 1;
                else
                    triple_combo[p]++;
→ Ссылка