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

186
26 июня 2022, 08:00

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

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

Может ли новосозданный вектор после вызова метода 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, где за каждый бит идет борьба, ответ тот же.

READ ALSO
.exe вызвал срабатывание точки останова

.exe вызвал срабатывание точки останова

Не понимаю, в чем ошибка, ведь значение вычисляется правильно, иногда даже выводиться в консоль, но с вводом первого числа ,как 1, а второго...

230
Функция завершается не дойдя до return с++

Функция завершается не дойдя до return с++

вот код программы, из книги олимпиадное программированиеОн должен решать задачу о количестве способов разместить n ферзей на доске n*n чтобы...

173
Как использовать лямбды вместе с boost.asio?

Как использовать лямбды вместе с boost.asio?

Как можно заменить все boost::bind на лямбды в коде ниже??? Почему при попытке в функции accept заменить boost::bind на std::bind, компилятор выдает ошибку No matching...

181