我很困惑,这就是我做的事情
vec
的第一个向量有5个元素s
的第二个向量有3个元素。vec_out
问题开始 -
5.它们的交叉点是否存储在 vec_out
中,没有结果,即没有任何相交的内容
6.将结果更改为要写入全新的矢量 v
,显示正确的结果,即2个元素相交
所以,我想知道,为什么没有vec_out
的重用工作来找出set_intersection
(它是set_intersection的第五个参数)?
任何提示? 这是代码
vector<int> vec(5);
vector<int> s(3);
vector<int> vec_out(10);
vector<int>::iterator itr;
vec[0]=3;
vec[1]=4;
vec[2]=4;
vec[3]=14;
vec[4]=42;
s[0]=14;
s[1]=42;
s[2]=442;
set_union(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin());
cout<<"union\n";
for(itr = vec_out.begin(); itr != vec_out.end(); itr++)
cout << " " << *itr;
cout<<endl;
std::vector<int> v(10); // Using a new vector works fine, and gives result
// THIS BELOW LINE IS NOT WORKING
//itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin());
itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), v.begin());
v.resize(itr - v.begin());
cout<<"intersection\n";
for(itr = v.begin(); itr != v.end(); itr++)
cout << " " << *itr;
仅供参考:我正在迭代预期的向量,没有显示问题,即当我尝试第5步时,我正在迭代vec_out。
答案 0 :(得分:0)
也许是因为您忘记在代码末尾的vec_out上替换v。这段代码工作正常(14 42):
std::vector<int> v(10); // Using a new vector works fine, and gives result
// THIS BELOW LINE IS NOT WORKING
itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), vec_out.begin()>);
/* itr=set_intersection(vec.begin(), vec.end(), s.begin(), s.end(), v.begin()); >*/
vec_out.resize(itr - vec_out.begin());
cout<<"intersection\n";
for(itr = vec_out.begin(); itr != vec_out.end(); itr++)
cout << " " << *itr;