В С++ 11 shrink_to_fit был введен для дополнения некоторых контейнеров STL (например, std::vector, std::deque, std::string).
Synopsizing, его основная функция - запросить контейнер, который связан с , чтобы уменьшить его емкость, чтобы соответствовать его размеру. Однако этот запрос не является обязательным, и реализация контейнера может свободно оптимизировать в противном случае и оставить вектор с емкостью больше его размера.
Кроме того, в предыдущем SO-вопросе OP не поощрялся использовать shrink_to_fit, чтобы уменьшить емкость его std::vector до его размера. Причины этого не приводятся ниже:
shrink_to_fitничего не делает или дает проблемы с локальностью кэша, а O (n) - выполнить (поскольку вам нужно скопировать каждый элемент в новый, более мелкий дом). Обычно это дешевле оставить в памяти. @Massa
Может ли кто-нибудь быть таким добрым, чтобы ответить на следующие вопросы:
- Удерживаются ли аргументы в цитате?
- Если да, то какой способ уменьшить емкость контейнера STL до его размера (по крайней мере, для
std::vector). - И если есть лучший способ сжать контейнер, какая причина существования
shrink_to_fitпосле всего?