Как я могу реализовать быструю карту, имеющую несколько ключей?

Я ищу C++ ассоциативный тип контейнера карты, который я могу выполнить, несколько включают поиски. Карта должна иметь постоянные поиски времени, но я не забочусь, заказана ли она или не заказана. Это просто должно быть быстро.

Например, я хочу сохранить набор std::vector объекты в карте с int и a void* как ключи поиска. Оба int и void* должен соответствовать, чтобы мой вектор был получен.

Такой контейнер уже существует? Или я оказываюсь перед необходимостью прокручивать свое собственное? Если так, как я мог реализовать его? Я пытался сохранить a boost::unordered_map в другом boost::unordered_map, но я не имел никакого успеха с этим методом, еще. Возможно, я продолжу Pershing этот метод, если не будет никакого более простого пути.

6
задан honk 5 June 2019 в 09:05
поделиться

3 ответа

Постоянный поиск требует хэш-карты. Вы можете использовать boost :: unordered_map (или tr1). Ключом будет комбинированный хэш указателя int и void.

4
ответ дан 17 December 2019 в 02:25
поделиться

Если вы не хотите использовать ускорение, вы можете попробовать map > . Однако поиск выполняется O (журнал (размер карты)).

2
ответ дан 17 December 2019 в 02:25
поделиться

Вы можете использовать boost :: multi_index .

(хотя я думаю, что на самом деле вам нужно использовать тип, содержащий как void *, так и целое число, в качестве ключа к вашей карте, и просто сравнить необработанные данные для обоих, чтобы предоставить оператор сравнения для map)

0
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: