gpt4 book ai didi

c++ - std::merge 和 std::set_union 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 16:26:59 26 4
gpt4 key购买 nike

问题很明确,我的 google- 和 cplusplus.com/reference-fu 让我失望了。

最佳答案

std::set_union将包含那些只出现在两个集合中一次的元素。 std::merge将包含它们两次。

例如,A = {1, 2, 5}; B = {2, 3, 4}:

  • union 将给出 C = {1, 2, 3, 4, 5}
  • 合并将得到 D = {1, 2, 2, 3, 4, 5}

两者都适用于已排序的范围,并返回已排序的结果。

简短示例:

#include <algorithm>
#include <iostream>
#include <set>
#include <vector>

int main()
{
std::set<int> A = {1, 2, 5};
std::set<int> B = {2, 3, 4};

std::vector<int> out;
std::set_union(std::begin(A), std::end(A), std::begin(B), std::end(B),
std::back_inserter(out));
for (auto i : out)
{
std::cout << i << " ";
}
std::cout << '\n';

out.clear();
std::merge(std::begin(A), std::end(A), std::begin(B), std::end(B),
std::back_inserter(out));
for (auto i : out)
{
std::cout << i << " ";
}
std::cout << '\n';
}

输出:

1 2 3 4 5 
1 2 2 3 4 5

关于c++ - std::merge 和 std::set_union 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com