Как контролировать размер блока `std :: deque` при выделении нового блока?

#c #memory-management #stl #implementation #deque

#c #управление памятью #stl #реализация #deque

Вопрос:

Когда мы вставляем новый элемент в a std::deque , он может выделить новый блок, содержащий элемент, если все существующие блоки заполнены.

Однако, как реализация контролирует размер блока?

Возможно ли пользователю контролировать размер блока? или это просто зависит от выбора реализации, например, 4K или 8K?

Комментарии:

1. Это определено реализацией — нет (переносимого) способа управления им.

2. Вам придется написать свой собственный …

3. вы можете предоставить пользовательский распределитель для предварительного выделения.

4. Думая об этом, я думаю, что это на самом деле не определено, а не определено реализацией. Определенная реализация потребует, чтобы реализация документировала размер, что, я думаю, не так.

Ответ №1:

Это выбранное значение реализации, и над ним нет контроля.

Например, Microsoft выбирает значения 16 или меньше для количества элементов в блоке. (Поиск _DEQUESIZ).