C ++, что такое хороший способ хэширования данных массива? - PullRequest
2 голосов
/ 18 февраля 2010

У меня любопытная проблема, и я думаю о возможных решениях. Проблема в том, что у меня есть несколько входов (до нескольких тысяч разных), которые в основном различаются по двум-трем массивам (массивы обычно имеют разный размер, от одного размера до пары тысяч элементов). функциям, которые обрабатывают массивы, требуется некоторое время для инициализации данных, поэтому я подумал кэшировать функцию / функтор вместе с данными и сохранить их на карте.

Теперь, как мне преобразовать необработанные массивы в пригодный для использования тип хеш-таблицы? Я изначально думал, чтобы прочитать массив в строку и использовать строку в качестве ключа. это хорошая идея? у вас есть лучшее предложение?

1 Ответ

2 голосов
/ 18 февраля 2010

Являются ли эти массивы целыми числами? Если да, просто иди с чем-то вроде этого

hash = (hash + (324723947 + a[i])) ^93485734985;

Подобная штука отлично подойдет для строк, если вы сделаете это для всех символов. Наконец, вы можете проверить дополнительные библиотеки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...