vector
будет реализован стек, так как ваша быстрая вставка в конце и быстрое удаление также в конце. Если вы хотите очередь FIFO, vector
будет неправильной реализацией для использования.
deque
или list
оба обеспечивают постоянное время вставки на любом конце. list
подходит для кэшей LRU, где вы хотите быстро переместить элементы из середины и где вы хотите, чтобы ваши итераторы оставались в силе независимо от того, сколько вы их перемещаете. deque
обычно используется, когда вставки и удаления находятся в конце.
Главное, что мне нужно спросить о вашей коллекции, это доступ к ней через несколько потоков. Я полагаю, что так оно и есть, и в этом случае одной из ваших основных целей является уменьшение блокировки. Лучше всего это сделать, если у вас есть хотя бы функция multi_push и multi_get, так что вы можете включить более одного элемента одновременно без какой-либо блокировки.
Существуют также контейнеры без блокировки или контейнеры без блокировки.
Вы, вероятно, обнаружите, что ваша стратегия блокировки важнее, чем любая производительность в самой коллекции, если все операции выполняются в постоянном времени.