Как посчитать количество повторяющихся пар в мультикарте - PullRequest
4 голосов
/ 21 февраля 2020

как подсчитать количество повторяющихся пар (с одинаковым ключом и значением) в мультикарте пар целых чисел?

Например, моя мультикарта содержит пары {(6,2), (6,2), (6,3) и (6,4)}, поэтому количество дубликатов равно 1, так как у меня есть 1 дубликат пара в моей мультикарте. Я пытался использовать такие методы, как find () и count (), но безрезультатно. Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 21 февраля 2020

Одним из распространенных подходов является использование std::set. Это не может содержать повторяющиеся данные.

Мы попытаемся поместить все данные в std::set, используя его конструктор диапазона. Использование CTAD облегчает написание.

Затем мы сравниваем размер std::multimap с размером std::set и получаем количество всех дубликатов.

Таким образом, это сводится к очень простая программа Пожалуйста, смотрите:

#include <iostream>
#include <map>
#include <set>

int main()
{
    // Source data
    std::multimap<int, int> mm = { {6, 2}, {6, 3}, {6, 2}, {6, 4} };

    // Use range constructor and CTAD to put the data into a set
    std::set s(mm.begin(), mm.end());

    // Show result
    std::cout << "Number of duplicates: " << mm.size() - s.size() << "\n";

    return 0;
}

Если есть другие требования, пожалуйста, оставьте отзыв, и я создам дополнительное решение.

...