У меня есть std::unordered_map
myMap
с ключом, парами значений <Key*, Value>
. Key
определяется как так:Получить значение на карте для известного хэш-выхода
struct Key
{
unsigned long int UniqueValue;
unsigned long int NonnUniqueValue;
}
Остальная часть программы гарантирует, что UniqueValue
является уникальным для каждого экземпляра Key
, однако NonUniqueValue
может отличаться между клавишами. Моя хэш-функция затем определяется как:
struct KeyHash
{
std::size_t operator()(const Key& k) const
{
return k.UniqueValue;
}
}
и моя карта затем:
std::unordered_map<Key*, Value, KeyHash> myMap;
Таким образом, в принципе, каждый ключ уже знает, что это собственное значение хэш-функции. Я хочу, чтобы иметь возможность ссылаться на пару ключей, как на сам экземпляр Key
, так и на номер UniqueValue
. Поскольку значение хеша уже известно, могу ли я использовать его для прямого ссылочного значения?
Например, если у меня есть два экземпляра Key
k1
и k2
где k1.UniqueValue = 2
, k2.UniqueValue = 5
, k1.NonUniqueValue = 42
и k2.NonUniqueValue = 42
, я хочу, чтобы иметь возможность ссылаться на значение в myMap
с ключом k1
зная только k1.UniqueValue
.
Это можно обойтись без прямого изменения Key
?