【发布时间】:2017-03-29 16:57:30
【问题描述】:
我正在考虑创建一个算法来比较 2 个向量 (v1,v2),并创建一个新向量 v3 来保存 v1 和 v2 之间未共享的值。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int args[])
{
vector<int> v1 = { 1,2,3,4,5,6,7,8,9 };
vector<int> v2 = { 1,2,6 };
vector<int> v3; //V3 should equal = {3,4,5,7,8,9}.
return 0;
}
向量总是被排序的。
【问题讨论】:
-
v1和v2是否必须排序?如果是这样,您可能可以在循环中使用std::mismatch来查找两个向量中都不存在的值。 -
你能假设它们会被排序吗?
-
感谢您的回复!是的,这 2 个向量将始终被排序,我现在来看看 std::mismatch。
-
虽然排序使事情变得更容易,但这不是必需的。只需复制第一个向量,对于每个复制的值,在 v2 中搜索完全相同的值。如果该值存在 - 从 v3 中删除该值
-
这能回答你的问题吗? STL set_symmetric_difference usage