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)
输出会是什么?
根据标准25.3.5:
union()通过定义包含每个元素出现的最大次数、intersection()包含最小值等等,集合运算的语义以标准方式推广到多重集。
因此,在您的示例中,结果将是 (1,1,1,2,2,3,4,0,0,0),因为您初始化了长度为 10 的向量。