using namespace std;
typedef struct
{
string sAbc;
int iTer;
} SStruct;
typedef vector<SStruct> LList;
STL: контейнеры
как только начинаю в программах использовать контейнеры, так обязательно эти самые программы (может пишу криво) жрут "кучу" памяти.
Вот для примера:
Код:
и есть класс в разделе private объявлен член класса список и метод доступа к данному списку:
Код:
class Test
{
private:
LList List;
public:
Test();
~Test();
FillList();
LList& GetList();
};
{
private:
LList List;
public:
Test();
~Test();
FillList();
LList& GetList();
};
реализация метода:
Код:
void Test::FillList()
{
SStruct ssTmp;
// .....
// Заполнение структуры
ssTmp.sAbc = "текст";
ssTmp.iTer = 1;
// Заполнение списка
List.push_back(ssTmp);
// ....,
}
LList& Test::GetList()
{
return List;
}
{
SStruct ssTmp;
// .....
// Заполнение структуры
ssTmp.sAbc = "текст";
ssTmp.iTer = 1;
// Заполнение списка
List.push_back(ssTmp);
// ....,
}
LList& Test::GetList()
{
return List;
}
в основном модуле программы использую данный класс:
Код:
// Создание экземпляра класса
Test1 = new Test;
// Несколько раз получаю список из класса
// Test1->GetList()
// Удаление экземпляра класса
delete Test1;
Test1 = new Test;
// Несколько раз получаю список из класса
// Test1->GetList()
// Удаление экземпляра класса
delete Test1;
кажется все нормально, дело не в контейнере. :)
Как ты думаешь - почему STL такой быстрый ?
Именно из-за использования оперативки.
Для настольных компов и серверов - сегодня лишние 500 мег -не проблема.
А вот для мобильных устройств тебе пришлось-бы писать свои аналоги STL именно из-за ограничений по исползованию памяти.
Более того, контейнеры STL имеют свойства резервировать память "вперед", т.е. при полном заполнении буфера, выделенного под контейнер - STL автоматически удваивает размер буфера - чтобы реже выполнять операции выделения памяти...
Как ты думаешь - почему STL такой быстрый ?
[/QUOTE]
Не такой уж он и быстрый.
[QUOTE=ART-CODE]
Именно из-за использования оперативки.
[/QUOTE]
А другие используют ПЗУ? :)
[QUOTE=ART-CODE]
Более того, контейнеры STL имеют свойства резервировать память "вперед", т.е. при полном заполнении буфера, выделенного под контейнер - STL автоматически удваивает размер буфера - чтобы реже выполнять операции выделения памяти...[/QUOTE]
Ну это не проблема, т.к. этим можно управлять.
Проблема STL в другом - в дефрагментации памяти.