Если вам важен порядок, в котором вы выполняете итерацию:
Перемещение итератора от одного элемента к следующему является операцией O (c) как в list
, так и в (multi)map
, за исключением того, что c немного меньше для list
, поэтому вряд ли вы получите много, объединив два.
Вы, вероятно, лучше всего используете только map
. map
естественно сортирует свои элементы в порядке ключа (время начала встречи в вашем случае), поэтому вы можете легко выполнять итерации в том же порядке. Поиск отдельного элемента - это O (log (n)). Это подходит, когда коллекция должна быть изменчивой.
В качестве альтернативы, вы можете просто сохранить элементы в vector
, а затем отсортировать их, прежде чем выполнять итерацию. После сортировки вы можете найти отдельный элемент с помощью binary_search
(O (log (n))) и, естественно, выполнять итерацию с превосходной производительностью (но все же O (c)). Сортировка стоит дорого, поэтому она подходит только тогда, когда сбор (в основном) неизменен.
Если вас не волнует порядок, в котором вы выполняете итерацию:
Просто используйте unordered_(multi)map
- при правильном хешировании он будет быстрее, чем map
.