【发布时间】:2019-09-21 17:25:50
【问题描述】:
我需要将相同的元素从 v1 和 v2 推送到 v3 为什么当输入像
时 v3 向量仍然是空的- v1 :1 2 3 4 5
- v2:3 4 5 6 7 8
逻辑有缺陷还是有帮助?
等等 使用 STL 函数会产生 seg fault 但是如果我增加 v3 的大小,那么不需要的 0 就会被打印出来 v3 只需要与 v1 v2 中的元素相同
vector<int> commonElements(vector<int>v1, vector<int>v2)
{
vector<int>v3;
// set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
for(int i=0;i<v1.size();i++)
for(int j=i+1;j<v2.size();j++)
{
if(v1[i]==v2[j])
v3.push_back(v1[i]);
}
return v3;
}
【问题讨论】:
-
你在
i+i开始j循环,所以你只检查v2的最后一部分。从 j=0 开始 -
std::set_intersection使用std::back_inserter完成所有这些工作。你为什么把它注释掉?