Возможно, std::unordered_map
может помочь вам, поскольку:
- ключи хешируются
- внутри, элементы хранятсяв корзинах, как в хеш-таблице
- время доступа постоянно
Дополнительные замечания:
Этот фрагмент позволяет понять расположение карты с помощью интерфейса сегмента:
std::cout << "Bucket count: " << m.bucket_count() <<std::endl;
for (int i=0; i < m.bucket_count(); i++ ) {
std::cout <<" bucket "<< i << " : size " << m.bucket_size(i) << std::endl;
}
std::cout<<"Average bucket load:" <<m.load_factor()<<std::endl;
Если вы с самого начала не предвидели достаточно сегментов и приводит ли динамический рост картык неоптимальной загрузке сегмента с большим количеством столкновений вы можете перефразировать карту:
m.rehash (2*m.bucket_count() );
Онлайн-демонстрация