Sye*_*hid -1 c++ set multiset set-intersection
我正在使用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}
但是,如果我有一个多重集
多组1{1,1,2,2,3,3,4,4,5,5,6,6}
多组2{4,4,5,5,6,6,7,7,8, 8,9,9}
我再次使用 std::set_intersection 它再次给我结果 {4,5,6}
这是不正确的,因为实际的交集是 {4,4,5,5,6,6}
尽管我使用多重集来保存交集的结果,但我仍然得到错误的答案。
谁能告诉我如何解决这个问题。
小智 6
麻烦您把代码贴出来看看是否有错误?我已经编写了一个交叉点示例,如下所示,并且它有效。
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() );
Run Code Online (Sandbox Code Playgroud)
结果是 1, 1, 2。这是正确的!
| 归档时间: |
|
| 查看次数: |
4091 次 |
| 最近记录: |