C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: деструктор для vector  (Прочитано 1771 раз)
luchik
Участник


Сказали спасибо: +6/-1
Offline

Сообщений: 111


деструктор для vector
« : 29 Май 2014, 11:20:51 »

Добрый день!
Есть класс:
Код:
class filePr{
public:
filePr(AnsiString fileName,AnsiString pathNetwork);
~filePr();
set_fileName(AnsiString p_fileName);
AnsiString get_fileName();
//
set_pathNetwork(AnsiString p_pathNetwork);
AnsiString get_pathNetwork();
private:
AnsiString fileName; //название файла
AnsiString pathNetwork; //путь к файлу в сети
};

и класс:

Код:
class project{
public:
project(AnsiString p_nameProject,bool p_isControl,AnsiString p_pathLocal,int p_countFile);
~project();
set_nameProject(AnsiString p_nameProject);
AnsiString get_nameProject();
set_isControl(bool p_isControl);
bool get_isControl();
add_files(AnsiString p_fileName,AnsiString p_pathNetwork);
private:
AnsiString nameProject;
bool isControl;
AnsiString pathLocal;
std::vector listFiles;
};

Не могу понять как записать деструктор для project. А именно как корректно написать освобождение памяти из под vector listFiles?
 
Записан
OVE
Участник


Сказали спасибо: +67/-0
Offline

Сообщений: 72


Re: деструктор для vector
« Ответ #1 : 29 Май 2014, 15:23:48 »

Можно так
Код:
for(int i=0;i listFiles.clear();
Записан
luchik
Участник


Сказали спасибо: +6/-1
Offline

Сообщений: 111


Re: деструктор для vector
« Ответ #2 : 29 Май 2014, 15:59:48 »

Цитата: OVE от 29 Май 2014, 15:23:48
Можно так
Код:
for(int i=0;i listFiles.clear();

Спасибо за ответ! Просто читала на форумах что вроде как clear не освобождает память, отведенную под vector
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


« Ответ #3 : 30 Май 2014, 06:04:11 »

Цитата: luchik от 29 Май 2014, 15:59:48
Цитата: OVE от 29 Май 2014, 15:23:48
Можно так
Код:
for(int i=0;i listFiles.clear();

Спасибо за ответ! Просто читала на форумах что вроде как clear не освобождает память, отведенную под vector

clear() не освобождает, но в приведенном примере происходит удаление объектов в цикле по контейнtру оператором delete.
Более быстрый алгоритм:
Код
std::vectorfilePr*>::iterator it = listFiles.begin();
for(; it!=listFiles.end(); ++it) delete *it;
 

При этом clear() в конце вызывать не обязательно, если этот код будет только в деструкторе объемлющего класса.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.108 секунд. Запросов: 19.