C++ Algorithm set_union()

2024年8月30日 | 阅读4分钟

C++ 算法 set_union() 函数用于查找两个已排序范围 [first1, last1) 和 [first2, last2) 的并集,该并集由存在于任一集合或两个集合中的元素组成。

对于第一个版本,使用运算符 < 比较元素,或者对于第二个版本,使用给定的二元比较函数 comp 比较元素。

语法

参数

first1:一个输入迭代器,指向两个已排序源序列中第一个序列的第一个元素。

last1:一个输入迭代器,指向两个已排序源序列中第一个序列的最后一个元素之后的元素。

first2:一个输入迭代器,指向第二个已排序源序列的第一个元素。

last2:一个输入迭代器,指向第二个已排序源序列的最后一个元素之后的元素。

comp:一个用户定义的二元谓词函数,接受两个参数,如果这两个参数有序则返回true,否则返回false。它遵循严格的弱排序来对元素进行排序。

result:一个输出迭代器,指向目标范围中第一个元素的位置。

返回值

此函数返回一个迭代器,指向构造范围的末尾。

复杂度

复杂性与 [first1, last1) 和 [first2, last2) 之间的距离呈线性关系:执行最多 2*(count1+count2)-1 次比较。其中 count1 = last1- first1 且 count2 = last2- first2。

数据竞争

访问范围 [first1, last1) 和 [first2. last2) 中的对象。

修改 result 和返回值之间范围内的对象。

异常

如果任何元素比较、元素赋值或迭代器上的操作抛出异常,此函数将抛出异常。

注意:无效参数会导致未定义行为。

示例 1

让我们看一个简单的示例来演示 set_union() 的用法

输出

1
2
3
4
5
6

示例 2

让我们看另一个简单示例

输出

First array contains: 5 10 15 20 25
Second array contains: 50 40 30 20 10

The union has 8 elements:
 5 10 15 20 25 30 40 50

示例 3

让我们看另一个简单的示例,以找出所有同时参加两个科目的学生列表

输出

Students in first subject: Nikita Divya Deep Kashish
Students in second subject: Aman Nikita Amita Deep

Students attending both subjects are:
 Aman Amita Deep Divya Kashish Nikita

示例 4

让我们看一个简单的例子

输出

A B C D E F

下一主题C++ 算法