|
|
1
8
这个 stl algorithms 提供多个函数来执行集合操作,尤其是计算 set symmetric difference ,这就是你需要的。 以下是使用示例:
编辑
我刚刚读了你对你问题的评论。如果要修改两个原始向量,可以使用
这里,我们把设定差v1-v2的结果放入v1。但是,我们不能做相反的事情,因为v1现在被修改了。解决方案是计算v1和v2的交点,然后计算与此交点的差:
我想有更多的性能解决方案,但这一个是明确的,并真正传达了您的意图,使用广为人知的STL算法。 |
|
|
2
1
在stl header算法中,是一个称为“set_symmetric_difference”的函数,它将把一个元素的所有元素都放在一个目标范围内,但不是将两个源范围都放在一个目标范围内。 记住,两个范围都必须开始排序。 |
|
|
3
0
对这两个向量进行排序,然后并行遍历它们,执行一个常见的合并操作。这将告诉你哪些项目是相同的。 |
|
|
4
0
简单的方法是进行n^2迭代,将第一个向量中的每个元素与第二个数组中的每个元素进行比较,并将匹配项添加到第三个向量中。完成n^2迭代后,将遍历第三个向量并从前两个向量中删除这些对象。 不是最好的解决方案,但取决于你期望向量有多大,它可能是最简单的解决方案之一。 |
|
|
5
0
对于中的每对项目
|
|
|
6
0
开始在集合中添加向量的值。重写Class1和Class2的Equals方法,以决定如何使对象相等。如果不重写equals,则默认情况下将使用==进行比较,因为对象属于不同的类==将始终返回false。所以需要重写equals方法。 |