Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вектор - надо ли вызывать resize после pop_back()?

1
31 октября 2005 года
kot_
7.3K / / 20.01.2000
Напомните плиз на счет сабжа. Сам не помню. В документации вроде написано, что функция вызывает деструктор и удаляет объект из памяти.Значит ли это, что его размерность становится на один элемен меньше - или всеже лучше переодически вызывать функцию сжатия массива? Почему переодически - так как в массиве хранятся объекты, представляющие пользователей залогиненных на сервере - не очень желательно что бы он рос безконтрольно. Но чистить его после каждого логинаут - тоже бессмысленно - ситуация когда ты массив сжал - и тут же система выделила память под нового пользователя более чем вероятна.
830
01 ноября 2005 года
MVal
76 / / 17.10.2002
Нет не надо. pop_back сам изменяет размер вектора. resize не нужен.

Если вектор из простых типов (int, AnsiString и т.п., а не, например vector <* TMemoryStream> v :) ) - pop_back() все сделает сам.

Если в векторе живет именно, что-то подобное тому, что я изобразил - надо вызывать для этого элемента delete v[v.size()-1] потом уже v.pop_back() - но resize в любом случае будет лишним.
1
01 ноября 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by MVal
Нет не надо. pop_back сам изменяет размер вектора. resize не нужен.

Если вектор из простых типов (int, AnsiString и т.п., а не, например vector <* TMemoryStream> v :) ) - pop_back() все сделает сам.

Если в векторе живет именно, что-то подобное тому, что я изобразил - надо вызывать для этого элемента delete v[v.size()-1] потом уже v.pop_back() - но resize в любом случае будет лишним.


Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог