C++ 2 deque的并集和交集(异常分段断层)

C++ 2 deque的并集和交集(异常分段断层),c++,segmentation-fault,gdb,intersection,set-union,C++,Segmentation Fault,Gdb,Intersection,Set Union,v是并集向量,而intersec是交集向量。下面是查找并集和交集的代码。如果有人有更简单的解决方案,请分享。最后我要联合交集 下面是给出异常分段错误的代码 5,10,15,20,25 // first deque 50,40,30,20,10 // second deque deque first={5,10,15,20,25}; 第二名{50,40,30,20,10}; 向量v(first.size()+second.size()); 向量::迭代器; 排序(first.begin(),f

v
是并集向量,而
intersec
是交集向量。下面是查找并集和交集的代码。如果有人有更简单的解决方案,请分享。最后我要联合交集

下面是给出异常分段错误的代码

5,10,15,20,25  // first deque
50,40,30,20,10 // second deque
deque first={5,10,15,20,25};
第二名{50,40,30,20,10};
向量v(first.size()+second.size());
向量::迭代器;
排序(first.begin(),first.end());//5 10 15 20 25
排序(second.begin(),second.end());//10 20 30 40 50
//联合
//第79行
it=set_union(first.begin()、first.end()、second.begin()、second.end()、v.begin());
v、 调整大小(it-v.begin());
//现在正在寻找交叉点
向量intersec(first.size()+second.size());
it=set_union(first.begin()、first.end()、first.begin()、second.end()、intersec.begin());
intersect.resize(它是intersect.begin());
现在,当使用-g标志编译时,我使用了gdb,下面是回溯堆栈

  deque<int> first = {5,10,15,20,25};
  deque<int> second = {50,40,30,20,10};
  vector<int> v(first.size()+second.size());                      
  vector<int>::iterator it;
  sort (first.begin(),first.end());     //  5 10 15 20 25
  sort (second.begin(),second.end());   // 10 20 30 40 50

  //union
  //line 79
  it=set_union (first.begin(), first.end(), second.begin(), second.end(), v.begin());
  v.resize(it-v.begin());

  // now finding intersection

  vector<int> intersec(first.size()+second.size());                      
  it=set_union (first.begin(), first.end(), first.begin(), second.end(), intersec.begin());
  intersec.resize(it-intersec.begin()); 
std::uuu copy\u move::uu copy\m(uuu first=,uuu last=0,uuu result=0x623ef0)at/usr/include/c++/5/bits/stl\u algobase.h:340 340*\uuuu结果=*\uuu第一; (gdb)英国电信 #0 0x000000000040a010标准:复制移动:复制( __first=,uuu last=0,uuu result=0x623ef0)位于/usr/include/c++/5/bits/stl_algobase.h:340 #标准中的1 0x0000000000409156:uuu复制_u移动_ua(uuuu第一个=0,uuuuuuuu最后一个=0,uuuuuu结果=0x623d04) at/usr/include/c++/5/bits/stl_algobase.h:402 #标准中的2 0x00000000004077d2:\复制\移动\ a2 (uuu first=0,uuu last=0,uuuuu result=0)at/usr/include/c++/5/bits/stl_algobase.h:438 #std::copy中的3 0x0000000000405c99(_first=0, __last=0,_result=0)位于/usr/include/c++/5/bits/stl_algobase.h:472 #标准中的4 0x00000000000404020:\uuuuuu集\u并集(\uuuuuu first1=0,\uuuuuu last1=0,\uuuuuuu first2=0,\uuuuuuuuu last2=0,\uuuuuuuu结果=0,\uuuuuuuuu comp=…) at/usr/include/c++/5/bits/stl_algo.h:4965 #在/usr/include/c++/5/bits/stl_算法h:5011中,std::set_union(uuu first1=5,uuu last1=0,uuu first2=5,uuuu last2=0,uuu result=5)中的5 0x0000000000402b8c #6 0x0000000000401b3b在测试时主()中。cpp:79
我无法理解bt中的问题。

我认为set_union()中有一个错误:

正确的方法应该是:

it=set_union (first.begin(), first.end(), first.begin(), second.end(), intersec.begin());

我想这是个打字错误。

我认为set_union()中有一个错误:

正确的方法应该是:

it=set_union (first.begin(), first.end(), first.begin(), second.end(), intersec.begin());

我猜这是一个输入错误。

typo:
it=set\u union(first.begin()、first.end()、first.begin()、second.end()、intersec.begin())
应该是
it=set_union(first.begin()、first.end()、second.begin()、second.end()、intersec.begin())。另外,您实际上没有在那里调用
set\u intersection
。哦,dayum,工作做得很好,现在工作很好,谢谢。您将我的日期输入到:
it=set_union(first.begin()、first.end()、first.begin()、second.end()、intersec.begin())
应该是
it=set_union(first.begin()、first.end()、second.begin()、second.end()、intersec.begin())。另外,您实际上没有在那里调用
set\u intersection
。哦,dayum,工作做得很好,现在工作很好,谢谢。你让我开心
it=set_union (first.begin(), first.end(), second.begin(), second.end(), intersec.begin());