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

时间:2012-08-07 00:48:29

标签: c++ set-union

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

setA包含a,b。 setB包含a,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");
}

有谁知道问题是什么?

1 个答案:

答案 0 :(得分:3)

您应该resize结果向量以适应联合的最大大小,或者使用std::back_inserter

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