Вектор - надо ли вызывать resize после pop_back()?
Напомните плиз на счет сабжа. Сам не помню. В документации вроде написано, что функция вызывает деструктор и удаляет объект из памяти.Значит ли это, что его размерность становится на один элемен меньше - или всеже лучше переодически вызывать функцию сжатия массива? Почему переодически - так как в массиве хранятся объекты, представляющие пользователей залогиненных на сервере - не очень желательно что бы он рос безконтрольно. Но чистить его после каждого логинаут - тоже бессмысленно - ситуация когда ты массив сжал - и тут же система выделила память под нового пользователя более чем вероятна.
Если вектор из простых типов (int, AnsiString и т.п., а не, например vector <* TMemoryStream> v :) ) - pop_back() все сделает сам.
Если в векторе живет именно, что-то подобное тому, что я изобразил - надо вызывать для этого элемента delete v[v.size()-1] потом уже v.pop_back() - но resize в любом случае будет лишним.
Цитата:
Originally posted by MVal
Нет не надо. pop_back сам изменяет размер вектора. resize не нужен.
Если вектор из простых типов (int, AnsiString и т.п., а не, например vector <* TMemoryStream> v :) ) - pop_back() все сделает сам.
Если в векторе живет именно, что-то подобное тому, что я изобразил - надо вызывать для этого элемента delete v[v.size()-1] потом уже v.pop_back() - но resize в любом случае будет лишним.
Нет не надо. pop_back сам изменяет размер вектора. resize не нужен.
Если вектор из простых типов (int, AnsiString и т.п., а не, например vector <* TMemoryStream> v :) ) - pop_back() все сделает сам.
Если в векторе живет именно, что-то подобное тому, что я изобразил - надо вызывать для этого элемента delete v[v.size()-1] потом уже v.pop_back() - но resize в любом случае будет лишним.
Спасибо.