Я хочу выполнить пересечение нескольких множеств с помощью переполнения стека

я использую std::set<int> и множественные классы std::multiset<int> выполнить некоторые операции над множествами — объединение, пересечение и т. д. Проблема заключается в том, что мне нужно выполнить пересечение между двумя множествами, чтобы я также получил повторяющиеся значения. Пересечение прекрасно работает, когда я использую его с простыми наборами (не множественными), например

Set1 = {1,2,3,4,5,6}
Set2 = {4,5,6,7,8,9}
тогда
std :: set_intersection даст мне правильный результат {4,5,6}

Однако, если у меня есть мультимножество

мульти-SET1 {1,1,2,2,3,3,4,4,5,5,6,6}
мульти-SET2 {4,4,5,5,6,6,7,7,8,8,9,9}

и я снова использую std :: set_intersection, он снова дает мне результат {4,5,6}

что не правильно, потому что фактическое пересечение {4,4,5,5,6,6}

Несмотря на то, что я использую мультимножество для хранения результатов пересечения, я все же получаю неправильный ответ.

Может кто-нибудь сказать мне, как я могу решить эту проблему.

-1

Решение

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

multiset<int> ms1;
ms1.insert(1);
ms1.insert(1);
ms1.insert(1);
ms1.insert(2);
ms1.insert(3);

multiset<int> ms2;
ms2.insert(1);
ms2.insert(1);
ms2.insert(2);
ms2.insert(2);
ms2.insert(4);

vector<int> v(10);
set_intersection( ms1.begin(), ms1.end(), ms2.begin(), ms2.end(), v.begin() );

результат 1, 1, 2. что правильно!

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]