Если std::vector vec
очищается с vec.clear()
, выделенная память не должна быть немедленно освобождена. size
вектора будет равно нулю, но capacity
будет / не может быть изменено.
Это очень полезное поведение, поскольку можно очистить большой вектор и присвоить ему новые значения без необходимости в дорогостоящем выделении / распределении памяти. Также память будет менее фрагментированной.
Это можно сделать с помощью vec.shrink_to_fit()
shrink_to_fit .
std::map
имеет функцию clear
, но не shrink_to_fit
. Что происходит с необходимой памятью для хранения карты после clear
?
cppreference.com утверждает, что map.clear () удаляет все элементы из контейнера. После этого вызова size () возвращает ноль.