如何找到没有重复的不同两个向量集
How to find different set of two vectors with no repetitions?
我正在编写代码以返回不在向量v2
v1
中的数据,并且没有使用C++重复。
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(),
std::inserter(diff, diff.begin()));
但是,当我的输入 v1,v2 是
v1=[137 138 139 140 141 142 143 144 148 150 157 158 161]
v2=[138 157 150 140 137 158 141 139 143 148]
输出导致意外解决方案,如
diff=[ 137 139 140 141 142 143 144 148 150 161]
虽然,我预期的解决方案必须是
diff=[ 142 144 161]
我应该如何纠正我的功能?谢谢
v2 需要排序。 v1 也是如此(确实如此)。该函数set_difference
假定两个向量都已排序。
该算法只需要遍历每个向量一次,只需要比较每个向量的当前光标。 这是一个显着的性能改进,并且与使用任意输入的算法相比节省了空间。
std::set_difference:
在对向量进行从排序区域 [first1, last1) 复制元素,这些元素是在排序范围 [first2, last2) 到范围开头的位置中找不到在d_first
http://en.cppreference.com/w/cpp/algorithm/set_difference
区分之前,您必须对向量进行排序
看方法:
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(),
std::inserter(diff, diff.begin()));
它被称为set_difference
是有原因的:)
只需使用set
容器而不是vector
容器即可。他们将确保您的数据已排序并且算法成功。
相关文章:
- 在C++中查找两个向量之间最相似的值
- 如何在C++中从两个向量生成所有可能的对?
- 返回两个向量 – 使用引用还是元组?
- 检查两个向量是否并行的最有效方法
- 如何获得比较两个向量对的子集
- 如何在 c++ 中对两个向量进行线性搜索?
- 如何在 c++ 中从两个向量创建 JSON 对象?
- C++如何同时删除位于两个向量中的 2 个指针?
- 如何通过 stl 容器和算法库计算两个向量的内积?
- 删除两个向量中的重复项
- 两个向量在犰狳中相等?
- 为什么我无法比较自定义类类型的两个向量?
- 通过块比较两个向量时,如何避免重复
- Boost.Test - 如何在交叉点上检查两个向量
- 通过移动从两个向量创建元组向量
- 如何在C 中合并两个向量
- R- armadillo c :用其他两个向量对向量进行排序
- 使用嵌套循环搜索两个向量并查看其属性
- 如何以精度换取速度来评估C++中两个向量的点积符号?(不特定于硬件)
- 我该如何XOR这两个向量的内容