这是代码(找到2组的联合):
template <class dtype>
void printSet(dtype data)
{
std::cout<<"\n";
for(auto i = data.begin(); i != data.end(); i++)
{
std::cout<<*i<<" ,";
}
}
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5};
std::set<long long> a(arr, arr + 5), b(arr, arr + 5), c;
std::vector<long long> v;
b.insert(1000);
printSet(a);
printSet(b);
set_union(a.begin(), a.end(), b.begin(), b.end(), v.begin());
printSet(v);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
1 ,2 ,3 ,4 ,5 ,
[1] 9444 segmentation fault ./a.out
Run Code Online (Sandbox Code Playgroud)
我在哪里搞砸了?
set_union
期望一个有效的输出迭代器,在某种意义上它应该被允许在该迭代器上写入.v
是空的,所以v.begin()
不是有效的迭代器.
尝试将矢量声明为
std::vector<long long> v(42);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
156 次 |
最近记录: |