Опять же, нет ограничения по размеру, выше которого deque или не лучше, чем вектор.Последствия фрагментации памяти практически одинаковы в любом случае, за исключением случаев, когда вы уже выполнили огромную нагрузку выделения / освобождения, и для большого вектора осталось недостаточно смежного пространства.Но этот случай очень редкий.Помните, что объем памяти составляет на процесс (Google для виртуальная память ).И вы можете исправить это, выделив память для вектора (методом reserve
) до того, как произойдет беспорядок.
Компромисс в терминах , что вы хотите с ним сделать .Если структура в основном неизменна, и вы хотите получить к ней доступ / перезаписать ее только с помощью индекса, перейдите к вектору.
Deque - это когда вам нужно сделать вставки либо в конце, в начале или в середине,что-то, что вектор не может обработать естественным образом (за исключением вставки в конце).
Статьи Херба Саттера, в общем, отличного качества, но вы заметите, что когда вы выполняете «перехват чисел» в C ++, большинствоВас учат в книгах по «общему С ++», и к ним нужно относиться с особой осторожностью.Низкая производительность индексирования, с которой вы сталкиваетесь при запросах, возможно, важна для вашего приложения.В этом случае не используйте deque.