Информация об изменениях

Сообщение Re[2]: Засада с эквивалентным ключом в std::unordered_map от 17.10.2024 12:12

Изменено 17.10.2024 12:13 Videoman

Re[2]: Засада с эквивалентным ключом в std::unordered_map
Здравствуйте, sergii.p, Вы писали:

SP>Здравствуйте, Videoman, Вы писали:


V>>Вводные:

V>>- С++ 17
V>>- снаружи приходят по умолчанию собранные std::unordered_map<std::string, SomeClass> (используют стандартный компаратор, это важно)

SP>вроде классический костыль — завести дублирующую мапу


SP>
SP>using map_t = std::unordered_map<std::string, SomeClass>;
SP>map_t object;
SP>std::unordered_map<std::string_view, map_t::iterator> ref_object;
SP>


Идея понятна и вполне была бы оправдана, но боюсь, у меня не наберется столько поиска, что бы перекрыть затраты на создание дополнительного хеша.
У нас это некий кусок обобщенной десериализации, где всякие JSON подобные форматы сначала десериализуются в std::unordered_map<std::string, value_class>. В другом месте, в нужный момент из std::unordered_map<std::string, value_class> происходит выдергивание типов. Фактически мне нужно один раз пройти по std::unordered_map и выдернуть от туда значения.