Если вы хотите multimap
, а не просто map
, альтернативой, вероятно, будет vector< list<int> >
или что-то подобное (на самом деле multimap
более или менее map
с list
тип элемента).
В общем, поиск vector
быстрее: это O(1)
для массива против O(log n)
для карты (в обоих случаях я не считаю поиск в list
/ vector
/ set
/ все, что используется для "мульти" части). Но , чтобы использовать vector
, вы должны сделать его таким же большим, как самый большой ключ int
, который вы хотите использовать; если ваши ключи последовательные, это не проблема, но если ваш индекс редкий, multimap
может быть лучшим выбором.
С другой стороны, если вам не нужен упорядоченный обход, unordered_multimap
(который на самом деле является хеш-таблицей) может быть лучшим из обоих миров: вы получаете поиск в виде массива O(1)
без необходимости сохранять огромный пустой массив.