Хеш-функция для пары длинных долго?

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

Пожалуйста, посетите эти ссылки для дальнейшей ссылки на переменные сеанса: Сеансы PHP через подстраницы того же домена

Если вы используете javascript / jquery, вы также можете взглянуть на это : Одно печенье - несколько страниц

19
задан 10 April 2009 в 15:47
поделиться

4 ответа

Естественный способ хеширования пары - это каким-то образом объединить хеш-значения ее компонентов. Самый простой способ - использовать xor:

namespace std {
namespace tr1 {

template<typename a, typename b>
struct hash< std::pair<a, b> > {
private:
   const hash<a> ah;
   const hash<b> bh;
public:
   hash() : ah(), bh() {}
   size_t operator()(const std::pair<a, b> &p) const {
      return ah(p.first) ^ bh(p.second);
   }
};

}} // namespaces

Обратите внимание, что эти пары хешей, такие как (1,1) или (2,2), все равны нулю, поэтому вы можете использовать более сложный способ объединить хеши частей , в зависимости от ваших данных. Boost делает что-то вроде этого:

size_t seed = ah(p.first);
return bh(p.second) + 0x9e3779b9 + (seed<<6) + (seed>>2);
11
ответ дан 30 November 2019 в 04:33
поделиться

boost :: hash формируют функциональную библиотеку.

или напишите свое. простейшая версия = pair.first * max_second_value + pair.second

10
ответ дан 30 November 2019 в 04:33
поделиться

Вам действительно нужна карта на основе хеша? Общая карта, основанная на бинарном дереве, будет работать нормально, если сложность гарантирует, что она работает для решения проблемы, которую вы решаете.

1
ответ дан 30 November 2019 в 04:33
поделиться

Подсказка: взгляните на этот пост: "Я не понимаю std :: tr1 :: unordered_map ".

Также хорошая документация по предикатам равенства и хеш-предикатам также является хорошим местом (как и этот пример ]).

2
ответ дан 30 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: