С учетом кода:
class Foo {
std::vector<int> items;
std::map<int, int> dictionary;
};
-
Если ничто никогда не добавляется к вышеуказанному вектору или карте, будет ли он по-прежнему выделять блок буферной памяти? (Другими словами, распределение буфера всегда происходит во время создания контейнера или может быть отложено до тех пор, пока вызовы таких функций, как push_back?)
-
Есть ли стандарт для обработки времени первоначального размещения буфера STL-контейнера или это поведение может варьироваться между контейнерами STL и компиляторами?
Примечание. Этот вопрос не касается дополнительных байтов, которые такие контейнеры будут добавлять к размеру класса Foo.
(Связанное подмножество этого вопроса с акцентом на размер выделения Начальная емкость вектора в С++.)