Вставка карты C ++ и поиск производительности и накладных расходов на хранение

Я хотел бы сохранить отображениеinteger ключ кfloat значение в памяти.

У меня примерно 130 миллионов ключей (и, соответственно, 130 миллионов значений).

Я сосредоточен на производительности поиска - мне нужно сделать много, много миллионов поисков.

Библиотека C ++ STL имеетmap класс для ассоциативных массивов такого рода. У меня есть несколько вопросов оmap.

Что такое накладные расходы на хранениеmap для набора данных указанного выше размера? Как масштабируется общий объем хранилищаmap?

Похоже, что основная структура данных дляmap является красно-черным, сбалансированным бинарным деревом. Звучит как в реальном мирепредставление для этогоO(log n) для вставки и поиска.

Это упоминаетO(1) для намека на вставку. Мои входные данные предварительно отсортированы, поэтому я считаю, что должен быть в состоянии предоставить подсказку для событий вставки. Как бы я дал эту подсказку, используя методы, перечисленныеВот?

Есть ли контейнер STL, который обеспечивает лучшую производительность поиска?

Существуют ли другие общедоступные платформы с открытым исходным кодом с классом связанного массива, который использует базовую структуру данных, которая будет работать лучше, чем STLmap?

Если написание моего собственного класса контейнера обеспечит лучшую производительность поиска, какие структуры данных я могу исследовать?

Для этой задачи я использую GCC 4, работающий под Linux или Mac OS X.

Я заранее прошу прощения, если это глупые вопросы. Спасибо за совет.

Ответы на вопрос(8)

Ваш ответ на вопрос