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

Ваш аккаунт

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

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

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

STL: контейнеры

335
04 июля 2006 года
enola
379 / / 25.01.2005
Подскажите, у меня извечная проблема:
как только начинаю в программах использовать контейнеры, так обязательно эти самые программы (может пишу криво) жрут "кучу" памяти.

Вот для примера:
 
Код:
using namespace std;

typedef struct
{
    string sAbc;
    int iTer;
} SStruct;

typedef vector<SStruct> LList;


и есть класс в разделе private объявлен член класса список и метод доступа к данному списку:
Код:
class Test
{
    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;
}


в основном модуле программы использую данный класс:
 
Код:
// Создание экземпляра класса
    Test1 = new Test;

    // Несколько раз получаю список из класса
    // Test1->GetList()

    // Удаление экземпляра класса
    delete Test1;
335
04 июля 2006 года
enola
379 / / 25.01.2005
кажется все нормально, дело не в контейнере. :)
2.3K
07 июля 2006 года
ART-CODE
134 / / 15.11.2004
Все работает правильно.
Как ты думаешь - почему STL такой быстрый ?
Именно из-за использования оперативки.
Для настольных компов и серверов - сегодня лишние 500 мег -не проблема.
А вот для мобильных устройств тебе пришлось-бы писать свои аналоги STL именно из-за ограничений по исползованию памяти.
Более того, контейнеры STL имеют свойства резервировать память "вперед", т.е. при полном заполнении буфера, выделенного под контейнер - STL автоматически удваивает размер буфера - чтобы реже выполнять операции выделения памяти...
3
07 июля 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=ART-CODE]Все работает правильно.
Как ты думаешь - почему STL такой быстрый ?
[/QUOTE]
Не такой уж он и быстрый.
[QUOTE=ART-CODE]
Именно из-за использования оперативки.
[/QUOTE]
А другие используют ПЗУ? :)
[QUOTE=ART-CODE]
Более того, контейнеры STL имеют свойства резервировать память "вперед", т.е. при полном заполнении буфера, выделенного под контейнер - STL автоматически удваивает размер буфера - чтобы реже выполнять операции выделения памяти...[/QUOTE]
Ну это не проблема, т.к. этим можно управлять.
Проблема STL в другом - в дефрагментации памяти.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог