如何压缩无符号字符的 C++ 向量以进行快速比较?无需减压

How to compress C++ vector of unsigned chars for quick comparisons? No decompression needed

我有很多无符号字符的向量,它们会经常与新向量进行比较。每个向量有大约 100 个元素。为了避免比较所有 100 个元素,我想将每个向量压缩为某个值。任何整数数据类型都可以。我永远不需要解压这个号码。我可以使用快速压缩吗?

使用散列函数代替压缩。生成一个小散列,例如32 位,来自每个向量的 100 个元素。然后,当您获得一个新向量时,将新向量的哈希值与所有旧向量的哈希值进行比较。如果散列不相等,则向量不相等。如果散列相等,则向量可能相等,也可能不相等。在这种情况下,比较两个向量的全部 100 个元素,看看它们是否真的相等。很少会出现误报,即哈希值相等但向量不相等的情况。因此,您几乎总是只有在匹配时才会投入完整的 100 个元素比较。