我正在研究一种代码剽窃检测方法。我需要为这种方法使用指纹算法。指纹算法将源代码的所有子串放到一个哈希表中。(所有子串长度相同。)为了优化,建议在将指纹放入哈希表时使用Rabin-Karp算法。
例如; 对于 string = abcdef和 length = 5,我们应该将abcde和bcdef子字符串放入哈希表。由于字符串的散列需要对字符串的每个字符应用数学运算,因此对于大量子字符串来说会很昂贵。
Rabin-Karp 算法利用子串的连续性。它计算第一个指纹的哈希值。对于其余的子字符串,它使用前一个子字符串。
C++ 的“映射”容器是否会自动将此算法应用于背景上的连续子字符串?还是我应该编写自己的哈希库?