stl - C++ unordered_map, unordered_set - как оптимально организовать поиск


0

Допустим, у нас есть класс, содержащий имя пользователя. Я хочу сделать организовать быстрый поиск по нему. Если использовать для этого unordered_map - расходуется лишняя память на хранении имени внутри структуры и в самом объекте. Если использовать unordered_set - для поиска поиска нужно создавать целый объект пользователя, так как функция сравнения принимает две константные ссылки на объекты моего класса. Написать отдельный хешер для строки и сравнить со строкой просто нельзя. Это вопрос о жадности, возникает у меня уже не раз. Можно-ли на STL сделать это оптимально - не хранить два раза имя, и не создавать объект для поиска? Если нет - в какой библиотеке реализация хеш-таблицы позволяет делать такие вещи?

Источник
  •  94
  •  0
  • 10 янв 2018 2018-01-10 13:07:50
Ну или можно использовать обычный (не unordered) set — 10 янв 20182018-01-10 14:16:17.000000
@VTT, спасибо за ключевое слово - то что я искал. Понял что делать такое нужно на Boost.MultiIndex, хотя очень странно - для оптимальной реализации таких простых вещей уже приходится использовать библиотеки. — 10 янв 20182018-01-10 14:10:10.000000
Вам нужен гетерогенный поиск, а почему его нет в стандартных unordered контейнерах см stackoverflow.com/questions/33373228/… 10 янв 20182018-01-10 13:29:01.000000

Ответов пока нет