Форум программистов, компьютерный форум 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) Почти четыре дня пытаюсь методом тыка осилить эти две операции... но безуспешно :( С помощью страых тем на форуме научился только открывать, сохранять и работать с... подробнее

Показать сообщение отдельно
petrovich1
0 / 0 / 0
Регистрация: 22.09.2007
Сообщений: 314
09.12.2011, 11:09  [ТС]     Освобождение памяти от циклического списка
Цитата Сообщение от boombastik
у тебя уже есть динамический контейнер: vector, если твоя задача - затолкать в контейнер все строки из файла в виде экземпляров класса Item, то зачем тебе организовывать список? просто забивай в вектор и все, элементы в векторе будут располагаться в том порядке в каком ты их туда затолкал если использовался метод push_back.
Я уже это понял и пришел к этому, внял совету bazile("Возможно имеет смысл ссылаться на родителя по индексу элемента в vector") и теперь функция формирования вектора выглядит так:
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
bool CTreeDlg::CreateList(CString FilePath)
{
    FILE *stream;   
    
    CItem tmp;
 
    char str_from_file[MAX_PATH];
 
    int i = 0;
    int parents_any_tabs[10];
 
    for(i = 0; i < 10; i++) 
        parents_any_tabs[i] = -1;
 
    i = 0;
 
    stream = fopen(FilePath, "a+"); 
    while( !feof( stream ) ) 
    {   
/*
    Иерархия в текстовом файле задается с помощью табуляции
    например, в следующем примере "Иванов" и "Петров" имеют
    родительский узел "Сотрудники", а "WinХР" имеет родительский 
    узел "Иванов"
 
    Пример: //////////////////
    Сотрудники
            Иванов
                WinХР
            Петров
    //////////////////////////
 
*/
        // здесь код формирования вектора           
        fgets(str_from_file, MAX_PATH, stream);
 
        tmp.m_Data = str_from_file;
        tmp.m_Data.OemToAnsi();
 
        // Здесь ведется подсчет табуляций для определения иерархии
        CString tabs = tmp.m_Data.SpanIncluding("   ");
 
        tmp.m_Data.TrimLeft();
        tmp.m_Data.TrimRight();
 
        // В качестве ссылки на родителя используется порядковый номер элента родителя в массиве.
        // Здесь указывается порядковый номер родителя для текущего элемента вектора.
        if (tabs.GetLength() != 0)
            tmp.Parent = parents_any_tabs[tabs.GetLength() - 1];
        else
            tmp.Parent = -1;
 
        parents_any_tabs[tabs.GetLength()] = i;
 
        mas[i] = tmp;
        v1.push_back(tmp);
        i++;
    }
    fclose(stream);
    return TRUE;    // всё тру
}
По заданию нужно из текстового файла или из sql-базы сформировать такой вектор, а потом на его основе проинициализировать TreeView. Идея с простой адресацией на родителя по его порядковому номеру вначале показалась мне удачной, но потом во время инициализации дерева пришлось "расшифровывать" иерархию. В задании надо реализовать drag&drop для этого дерева.
Какой подход посоветуете?
 
Текущее время: 15:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru