📅  最后修改于: 2023-12-03 14:59:45.547000             🧑  作者: Mango
set_union()
函数是C++标准模板库(STL)中的一个算法函数,用于计算两个已排序的序列的并集并将结果存储在目标序列中。该函数的时间复杂度为O(N+M),其中N和M分别是两个序列的元素个数。
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result);
first1
,last1
:定义第一个序列的起始和结束迭代器。first2
,last2
:定义第二个序列的起始和结束迭代器。result
:定义目标序列的起始迭代器,用于存储计算得到的并集。set_union()
函数返回一个迭代器,指向存储结果的目标序列的尾后位置。
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2 = {4, 5, 6, 7, 8};
std::vector<int> result(vec1.size() + vec2.size());
// 计算vec1和vec2的并集
auto it = std::set_union(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());
result.resize(std::distance(result.begin(), it)); // 调整result的大小,使其与并集的实际大小相匹配
// 输出并集结果
std::cout << "Union of vec1 and vec2: ";
for (const auto& num : result) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
输出结果:
Union of vec1 and vec2: 1 2 3 4 5 6 7 8
在上述示例中,我们使用set_union()
函数计算两个已排序的向量vec1
和vec2
的并集,并将结果存储在向量result
中。最后,我们遍历result
向量并输出并集的内容。
运行示例代码会输出并集的结果为:1 2 3 4 5 6 7 8。
set_union()
函数是一个有用的STL算法函数,用于计算两个已排序序列的并集。它可以帮助程序员在处理集合操作时更加方便地实现并集操作。请确保在使用set_union()
函数之前,你已经对要处理的序列进行了适当的排序操作。