Я работаю над методом обнаружения кодового плагиата.Мне нужно использовать алгоритм fingerprint для этого метода.Алгоритм отпечатка пальца помещает все подстроки исходного кода в хеш-таблицу.(Все подстроки имеют одинаковую длину.) В целях оптимизации рекомендуется использовать алгоритм Рабина-Карпа при помещении отпечатков пальцев в хеш-таблицу.
Например;для строки = abcdef и для длины = 5 мы должны поместить abcde и bcdef подстроки в хеш-таблицу.Поскольку для хеширования строк необходимо применять математическую операцию для каждого символа строки, это будет дорогостоящим для многочисленных подстрок.
Алгоритм Рабина-Карпа использует преимущество последовательностей подстрок.Он вычисляет значение хэша первого отпечатка.А для остальных подстрок он использует предыдущую подстроку.
Применяет ли контейнер «map» C ++ автоматически этот алгоритм для последовательных подстрок на фоне?Или я должен написать свою собственную хеш-библиотеку?