посчитать количество повторений одинаковых элементов в map
Есть словарь map<pair<string, string>, string> triple_combo. Как посчитать количество повторений одинаковых в нем элементов? Одинаковые элементы, это я имею ввиду в соответствии ключ - значение, ключ -значение и тд. Сколько раз эти пары повторяются?
Ответы (2 шт):
По всей видимости, вопрос является следствием предыдущих Ваших вопросов: Объединить пару элементов из одного вектора с другим элементом и Разбить элементы вектора по парам
Фактически, Вам нужна гистограмма пар от пары строк и строки 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 в моём ответе
Воспользовался ответом @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]++;