我对set.union(C++)有问题

I have an issue with set.union (C++)

本文关键字:有问题 C++ set union 我对      更新时间:2023-10-16

我正在尝试并集两个集合(在一个向量中)。

setA包含a,b。setB包含一个,c.

并集之后,结果应该包含a、b、c。但是,该程序无法运行,它存在某种调试错误。

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
vector<char> setA;
vector<char> setB;
vector<char> result;
vector<char>::iterator it;
setA.push_back('a');
setA.push_back('b');
setB.push_back('a');
setB.push_back('c');
it = set_union(setA.begin(), setA.end(), setB.begin(), setB.end(), result.begin());
for (int i = 0; i < result.size(); i++)
{
    cout << result[i] << " ";
}
system("PAUSE");
}

有人知道问题出在哪里吗?

您应该将结果向量resize用于容纳并集的最大大小,或者使用std::back_inserter:

it = set_union(setA.begin(), setA.end(),
               setB.begin(), setB.end(),
               back_inserter(result));