c++ - 为什么即使输入相等 v3 也不返回任何内容
问题描述
我需要将相同的元素从 v1 和 v2 推送到 v3 为什么当输入类似时 v3 向量仍然为空
- v1:1 2 3 4 5
- v2:3 4 5 6 7 8
逻辑有缺陷还是有帮助?
依此类推_ _ _
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;
}
解决方案
没有必要放弃std::set_intersection
。问题是接收结果的容器需要适当调整大小以保存结果。
std::back_inserter()
如果您使用迭代器,则可以使用空向量:
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>
std::vector<int> commonElements(const std::vector<int>& v1, const std::vector<int>& v2)
{
std::vector<int> v3;
set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(), std::back_inserter(v3));
return v3;
}
int main()
{
auto test = commonElements({1,2,3,4,5}, {4,5,6,7,8});
for (auto &v : test )
std::cout << v << " ";
}
输出:
4 5
推荐阅读
- sql - [Microsoft][ODBC Driver Manager] 无法建立与 SQL 服务器的连接
- google-cloud-dataflow - 如何使用 Beam SQL 执行查找
- pug - 是否有停止处理和退出命令?
- ngrx-effects - ngrx 效果中的错误处理
- javascript - Express.js 应用程序在本地运行良好,但在 Heroku 上部署时无法运行
- linux - 评估变量 - 输出 json 文件内容
- php - 将mysql查询的结果用于新查询
- excel - Excel:如何通过两列查找返回唯一列表数组
- sql-server - 使用 Attunity 连接器进行增量加载
- c++ - 有没有一种简单的方法可以从 C++ 中的路径获取文件名?