set_union与multiset容器?

Gia*_*uca 6 c++ containers stl stl-algorithm

当一个或两个输入容器是具有重复对象的多个集合时,算法std:set_union的返回是什么?重复丢失了吗?

我们假设例如:

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_union( ms1.begin(), ms1.end(), ms2.begin(), ms2.end(), v.begin() );
Run Code Online (Sandbox Code Playgroud)

输出会是什么?

Mik*_*our 4

根据标准25.3.5:

union()通过定义包含每个元素出现的最大次数、intersection()包含最小值等等,集合运算的语义以标准方式推广到多重集。

因此,在您的示例中,结果将是 (1,1,1,2,2,3,4,0,0,0),因为您初始化了长度为 10 的向量。