|
|
1
4
类似于 std::mismatch 算法 你也可以使用 std::set_difference |
|
|
2
1
diff longest common subsequence 在两个向量中(使用映射相等),然后递归非公共部分。最终,您将有一个相同的向量子序列和没有公共元素的子序列的交替列表。然后,您可以很容易地从中产生您喜欢的任何输出。 将它应用于两个向量,就可以了。 请注意,由于映射比较昂贵,如果您可以对映射进行散列(使用强散列-冲突将导致不正确的输出)并使用散列进行比较,您将节省大量时间。 一旦您在末尾找到不匹配的子序列,您将得到如下结果:
如果突变和插入相邻,则会变得更复杂:
确定是否匹配
当然,如果您不关心地图的内容如何不同,那么您可以停在这里,您就有了所需的输出。 |
|
|
3
0
你到底想达到什么目的?你们能准确地定义你们期望的输入输出吗?伪代码在向量索引处比较贴图。如果这不是正确的语义,那么是什么? |
|
|
4
0
你能把每一张地图和某种校验和(或布鲁曼过滤器)联系起来吗?在一次检查中,你就可以判断比较是否有意义。 |
|
|
5
0
和
因为不清楚“c”是否应该与“d”相比较,所以它也可以与“b”相比较。我假设向量没有排序,因为std::map没有提供关系运算符。相反,这些地图在我看来完全不相关;-) 所以你的例子有点误读。甚至可能是
具有 a c f e 这是二次运行时。
如果要查找缺少的元素,只需交换vector1和vector2。 如果您想在vector2中的某个元素与vector1中的某个元素仅在一个键中进行不匹配的检查,则必须在“无需与剩余键进行比较”周围添加其他代码。 |