我正在尝试将两个集合(在向量中)。
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");
}
有谁知道问题是什么?
答案 0 :(得分:3)
您应该resize
结果向量以适应联合的最大大小,或者使用std::back_inserter
:
it = set_union(setA.begin(), setA.end(),
setB.begin(), setB.end(),
back_inserter(result));