Вы можете использовать сеанс для придания состояния вашим страницам состояния, если вы об этом просите. На мой взгляд, использование базы данных для этой цели было бы излишним. Попробуйте установить переменную сеанса для домена, и вы можете вызвать эту переменную с любой страницы этого домена.
Пожалуйста, посетите эти ссылки для дальнейшей ссылки на переменные сеанса: Сеансы PHP через подстраницы того же домена
Если вы используете javascript / jquery, вы также можете взглянуть на это : Одно печенье - несколько страниц
Естественный способ хеширования пары - это каким-то образом объединить хеш-значения ее компонентов. Самый простой способ - использовать 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);
boost :: hash формируют функциональную библиотеку.
или напишите свое. простейшая версия = pair.first * max_second_value + pair.second
Вам действительно нужна карта на основе хеша? Общая карта, основанная на бинарном дереве, будет работать нормально, если сложность гарантирует, что она работает для решения проблемы, которую вы решаете.
Подсказка: взгляните на этот пост: "Я не понимаю std :: tr1 :: unordered_map
".
Также хорошая документация по предикатам равенства и хеш-предикатам также является хорошим местом (как и этот пример ]).