Использование cmph не поможет. Вам необходимо знать все ключи заранее, чтобы создать (минимальную) идеальную хеш-функцию.
Вам нужна простая ассоциативная структура отображения, которая позволит вам реализовать разреженный массив. Подойдет любая хеш-таблица или древовидная структура. Вы можете использовать hash_map или map из коробки из вашей реализации c ++ stl или любой подобной структуры данных.
Если вы хотите проявить фантазию, вы можете использовать Judy Arrays, но я сомневаюсь, что это будет иметь какое-то значение, если вы не сможете должным образом оценить производительность и не захотите рассмотреть более сложные структуры данных, которые сделают предположения для вашего конкретного варианта использования.
Сделай простую вещь. Самый простой из доступных хеш-таблиц - лучший ответ. Даже не думайте о хэш-функциях или о чем-то подобном: все, что предоставляет ваша платформа, будет работать достаточно хорошо.