|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.01.2014, 12:40 | #1 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Выбор структуры данных
Здравствуйте, пишу УИ, появилась потребность в структуре данных для хранения разных виджетов. Массив указателей не подходит, т.к. он имеет фиксированный размер. Вектор тоже не самая лучшая идея. Дерево самое приемлемое, но сложно будет следить за освобождением памяти в большой иерархии. Прошу совета.
P.S. Смартпоинтеры не подойдут в связи с достаточно немаленькой иерархией разных виджетов. Благодарю, RussDragon |
18.01.2014, 14:20 | #2 |
Упртй программер
Форумчанин
Регистрация: 26.11.2009
Сообщений: 150
|
чем вектор не устраивает? хранить иерархию неудобно? а что если хранить ключ+значение, где в ключе прописывать иерархическую связь? (ессно, не в векторе)
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru Последний раз редактировалось b2soft; 18.01.2014 в 16:42. |
19.01.2014, 14:12 | #3 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Проблема не в сложности хранить иерархию в векторе. Для этого у меня в каждом виджете есть переменная ID (собственно, он и служит индексом/ключем). Мне не очень нравится то, как вектор хранит данные. При каждом новом добавленном элементе, он полностью копирует массив. Плюс к этому, я плохо понимаю, как сделать адекватное освобождение памяти в таком случае. Ведь если будет что-то вроде:
vector<UI_Widget*> List; И он будет полностью заполнен, то при разрушении он эту самую память не освободит, я прав? Последний раз редактировалось RussDragon; 19.01.2014 в 14:18. |
19.01.2014, 14:45 | #4 | ||||
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Цитата:
Цитата:
Цитата:
Цитата:
Для правильного выбора контейнера надо плясать от нужного функционала - сформулируйте какой функционал вам нужен и станет ясно какой контейнер использовать. |
||||
19.01.2014, 15:48 | #5 | |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Цитата:
Есть иерархия виджетов (кнопки, поля и тп.), класс Сюрфейс содержит эти самые кнопки, которые размещены на поле. Требуется возможность добавления/удаления определенных элементов. Вектор, по сути, подходит, но проблема с удалением памяти не особо веселит. Список. Та же проблема, либо делать деструктор/конструктор этой самой структуры, либо удалять память напрямую (в смысле, конкретно при удалении элемента списка, удалять к тому же и указатель в нем). Как вариант, написать свой смартпоинтер, поддерживающий классовую-иерархию, что кстати, не такая плохая идея. |
|
19.01.2014, 16:09 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
При такой постановке вопроса, я бы выбрал list.
Не понимаю, в чем (по вашему) проблема удаления? Зачем вам нужен смарт поинтер? Где здесь вообще упомянутый ID? Функционал, который вы требуете, это добавление/удаление элементов - для этого никакую память выделять/освобождать не надо. |
19.01.2014, 16:13 | #7 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Проблема в том, что объекты _обязаны_ быть выделены динамически.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выбор структуры данных в Run-time | moon-guest | Общие вопросы Delphi | 0 | 15.07.2013 11:56 |
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) | _4Alex4_ | Помощь студентам | 1 | 14.11.2012 07:39 |
Выбор данных по критерию | Anatoly_K | Microsoft Office Excel | 1 | 16.07.2010 09:43 |
ВЫБОР НУЖНЫХ ДАННЫХ | Slavik | Microsoft Office Excel | 4 | 13.04.2009 21:37 |
Выбор данных и суммирование | rus_75 | Microsoft Office Excel | 6 | 28.02.2009 16:30 |