Текущий у меня есть вложенный хэш. Ключ внутренней карты имеет очень большой диапазон, но внешний ключ карты имеет только 10 различных возможных строк.unordered_map vs vector + пользовательское хеширование для небольшого количества элементов
unordered_map<string, unordered_map<int, list<string>>> nestedHashMap;
было бы более эффективным для меня, чтобы переключиться на
vector<unordered_map<int, list<string>>>
и есть мой собственный хэш-функцию
static int hashFunc(string stringToBeHashed){
switch(stringToBeHashed){
case "example1":
return 0;
.
.
.
case "example10":
return 9;
default:
return -1;
}
}
и сделать свой собственный хэширования перед каждым смотреть? Что касается сложности пространства, из-за того, что unordered_map является контейнером на основе узлов, я думаю, что этот векторный подход спасет мне некоторую память на каждом узле, требуемую unordered_map. Кроме того, я предполагаю, что внутренний хэш-файл гарантирует быстрый поиск, даже если ключ является int. Ключ имеет большой диапазон, поэтому я не думаю, что использование вектора здесь увеличило бы производительность. Правильно? Любые комментарии/советы будут оценены.
Память здесь не является проблемой.
Пробуйте различные варианты и измеряйте их характеристики. Затем вернитесь и скажите всем остальным, чтобы мы могли все учиться. –
Пока вы на нем, рассмотрите 'vector' вместо 'list '. Результаты могут шокировать и смятение. –
user4581301