Ответ 1
deque
похож на черный ящик. Не указано, как это реализовано. Реализация может свободно использовать любую технику, которая ей нравится, чтобы соответствовать требованиям производительности. Следовательно, он не может принимать размер сегмента в качестве параметра шаблона.
Конечно, такая структура данных полезна. Стандарт мог предоставить его (под именем deque
или как новый контейнер), но они этого не сделали. Напротив, в контейнерах unordered_*
гарантированно используются контейнеры. За [unord.req]/9:
Элементы неупорядоченного ассоциативного контейнера организованы в сегменты. Ключи с одинаковым хеш-кодом появляются в том же сегменте. Количество сегментов автоматически увеличивается при добавлении элементов в неупорядоченный ассоциативный контейнер, так что среднее количество элементов в сегменте остается ниже границы. Перефразирование делает недействительными итераторы, изменяет порядок между элементами и изменения, в которых появляются элементы сегментов, но не делает недействительными указатели или ссылки на элементы. Для
unordered_multiset
иunordered_multimap
перефразировка сохраняет относительный порядок эквивалентных элементов.
deque
не имеет аналогичной формулировки.