Как получить вектор с нужным capacity?

Может ли новосозданный вектор после вызова метода reserve(x) иметь capacity больше, чем x? Если да, то правда ли, что чтобы получить вектор с нужным тебе capacity, надо сначала заполнить вектор?

std::vector a;
a.reserve(x);
// ... insert x elements ...
a.shrink_to_fit();

Ответы (1 шт):

Автор решения: KoVadim

Может ли новосозданный вектор после вызова метода reserve(x) иметь capacity больше, чем x?

да, ему некто это не запрещает

Если да, то правда ли, что чтобы получить вектор с нужным тебе capacity, надо сначала заполнить вектор?

нет, не факт. https://en.cppreference.com/w/cpp/container/vector/shrink_to_fit

It is a non-binding request to reduce capacity() to size(). It depends on the implementation whether the request is fulfilled.

может, но не обязан.

Как получить вектор с нужным capacity?

а зачем? если это экономия памяти или что то ещё подобное, тогда может лучше свой вектор написать, который будет выделять "правильное" кол-во памяти. Если же это высоконагруженные приложения или embeded, где за каждый бит идет борьба, ответ тот же.

→ Ссылка