Может ли новосозданный вектор после вызова метода reserve(x) иметь capacity больше, чем x? Если да, то правда ли, что чтобы получить вектор с нужным тебе capacity, надо сначала заполнить вектор?
std::vector a;
a.reserve(x);
// ... insert x elements ...
a.shrink_to_fit();
Может ли новосозданный вектор после вызова метода 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, где за каждый бит идет борьба, ответ тот же.
Продвижение своими сайтами как стратегия роста и независимости