Форум программистов, компьютерный форум CyberForum.ru

Освобождение памяти от циклического списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна максимальная скорость программы http://www.cyberforum.ru/cpp-beginners/thread500195.html
Нужна максимальная скорость программы (сложение, сравнение целочисленных переменных, в том числе лежащих в Byte массивах и пр. похожие операции). На каком языке какой версии это лучше делать?
C++ Как сделать диалог, который сам появляется и исчезает привет всем! как сделать диалоговое окно, которое само появляется (то есть НЕ при нажатии на кнопку или пункт меню), а отобразив то, что нужно, само исчезает (без всяких кнопок ОК или CANCEL)?? Вроде бы в Билдере это не сложно делалось, а вот в Визуале есть только функции, которые позволяют изменять окно только перед его появлением. http://www.cyberforum.ru/cpp-beginners/thread500189.html
Литаретура по созданию драйверов. C++
Hi! хочу заняться написанием драйвером для устройств. Какую литературу Вы можете посоветовать, для начинающего, чтобы там описывалось, что такое порты, как определить какие порты использует устройство, какие сигналы прерываний и т.д. Как работать с портами ввода/вывода (USB/COM), содержали примеры написания драйверов для какихто устройств (модем, винчестер). Может есть специализированный...
Проблема с методом OnOk для диалогового окна C++
Привет всем. Метод OnOk для диалогового окна свой радной. Я использовала OK для вызыва другого диалогового окна который содержит кнопки OK и Cancel. Хотела чтоб OK закрывал главное окно программы, а Cancel не делал нечего(кроме отмены вызванного окна). Увы результат только об ошибки в коде со стораны комплятора. Может подскажети как пройти?
C++ Activex-компонент Spreadsheet http://www.cyberforum.ru/cpp-beginners/thread500089.html
Создал MDI-ое приложение. В каждом дочернем окне у меня создается компонент Spreadsheet (класс CSpreadsheet1). Этот ActiveX компонент является Excel таблицой. Связал с ним переменную - получил доступ к некоторым его свойствам. Но не как не могу получит те данные, которые ввожу в ячейки таблицы. Или наоборот заполнить ячейки какими-то данными. Если кто-то знает как это всю делается буду очень...
C++ выделение и копирование в Word Доброго времени суток! Пожалуйста подскажите как сделать несколько действий с MS Word''om: 1. Выделить текст весь текст из одного документа (заполненая таблица в out.doc) 2. Скопировать его конец другого документа (in.doc) Почти четыре дня пытаюсь методом тыка осилить эти две операции... но безуспешно :( С помощью страых тем на форуме научился только открывать, сохранять и работать с... подробнее

Показать сообщение отдельно
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
09.12.2011, 01:41     Освобождение памяти от циклического списка
petrovich1, несколько размышлений по дизайну твоего приложения:

* у тебя уже есть динамический контейнер: vector, если твоя задача - затолкать в контейнер все строки из файла в виде экземпляров класса Item, то зачем тебе организовывать список? просто забивай в вектор и все, элементы в векторе будут располагаться в том порядке в каком ты их туда затолкал если использовался метод push_back.

* если у тебя задание организовать элементы именно в виде списка, или ты знаешь, что тебе точно потребуется быстрая вставка новых элементов, в особенности вставка между уже существующими элементами (это единственное преимущество списка перед вектором), то в STL уже есть предназначенный для этого шаблон: list.

* если у тебя задание организовать свой собственный лист, то ты делай это полностью самостоятельно, твой класс Item уже имеет все необходимое для организации простого одно-направленного листа (точнее стека, потому как элементы ссылаются на родителя, то есть предыдущий элемент). На вскидку класс списка выглядел бы следующим образом (не компилировал, поэтому не гарантирую что будет работать сходу):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
class CItem 
{
public:
    // Переменные
    CItem* p_parentItem;
    CString m_Name;
    CString m_Family;
    // Методы
    CItem(void);
    CItem(CString& name, CString& family)
    {
        m_Name = name;
        m_Family = name;
    };
    
    ~CItem(void);
} 
 
class CList
{
protected:
    CItem* m_pLast;
 
public:
    CList()
    {
        m_pLast = NULL
    };
    
    ~CItem()
    {
        // Self cleaning
        CItem* pItem = m_pLast;
        while (pItem != NULL)
        {
            CItem* pParent = pItem->p_parentItem;
            delete pItem;
            pItem = pParent;
        }
    }
    
    void Insert(CItem* pItem)
    {
        pItem->p_parentItem = m_pLast;
        m_pLast = pItem;
    }
    
    void Insert(CString& name, CString& family)
    {
        Insert(new CItem(name, family));
    }
    
    int Size()
    {
        int result = 0;
        CItem* pItem = m_pLast;
        while (pItem != NULL)
        {
            pItem = pItem->p_parentItem;
            result++;
        }
        return result;
    }
    
    CItem* GetLast()
    {
        return m_pLast;
    }
    
    CItem* GetFirst()
    {
        if (m_pLast == NULL)
        {
            return NULL;
        }
        
        CItem* pItem = m_pLast;
        while (pItem->p_parentItem != NULL)
        {
            pItem = pItem->p_parentItem;
        }
        
        return pItem;
    }
    
    CItem* FindByName(CString& name)
    {
        CItem* pItem = m_pLast;
        
        while (pItem != NULL)
        {
            if (pItem->m_Name == name)
            {
                return pItem;
            }
            pItem = pItem->p_parentItem;
        }
        
        return NULL;
    }
    
    // And so so on
}
С уважением,
Владимир
 
Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru