gpt4 book ai didi

c++ - C++的 "map"容器是否对字符串的连续子串应用Rabin-Karp算法?

转载 作者:行者123 更新时间:2023-11-30 03:17:02 27 4
gpt4 key购买 nike

我正在研究一种代码抄袭检测方法。我需要为此方法使用指纹算法。指纹算法将源代码的所有子串放入一个哈希表中。 (所有子串长度相同。) 为了优化,建议在将指纹放入哈希表时使用Rabin-Karp算法。

例如;对于字符串 = abcdef 和长度 = 5,我们应该将 abcdebcdef 子字符串放入散列 table 。由于字符串的散列需要对字符串的每个字符应用数学运算,因此对于大量子字符串来说,这将是昂贵的。

Rabin-Karp 算法利用了子串的连续性。它计算第一个指纹的哈希值。对于其余的子串,它使用前一个子串。

C++ 的“map”容器是否自动将此算法应用于背景上的连续子字符串?还是我应该编写自己的哈希库?

最佳答案

std::unordered_map 的构造函数 http://www.cplusplus.com/reference/unordered_map/unordered_map/需要一个哈希器。

来自 std::hash 上的在线文档(https://en.cppreference.com/w/cpp/utility/hash):

The actual hash functions are implementation-dependent and are not required to fulfill any other quality criteria except those specified above.

关于c++ - C++的 "map"容器是否对字符串的连续子串应用Rabin-Karp算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55774132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com