Russian Qt Forum

Qt => Общие вопросы => Тема начата: leonopulos от Февраль 06, 2015, 16:29



Название: Выбор модели работы с данными
Отправлено: leonopulos от Февраль 06, 2015, 16:29
Здравствуйте.
Помогите с выбором структуры данных.
Имеются 2 списка: 1, 2, 3, 4... и a,b,c,d...
Элементы из одного списка могут ссылаться на элементы другого списка, как показано на рисунках.
Количество элементов в списках могут меняться.
Их можно как добавлять, так и удалять.
Если элемент удаляется, то должны удаляться все связи, идущие к нему.
Как лучше обрабатывать эти данные? то ли как граф, то ли как какие-то взаимоувязанные списки?
Не получается готовый контейнерный класс подобрать.


Название: Re: Выбор модели работы с данными
Отправлено: torwig от Февраль 06, 2015, 19:45
Например, элемент списка может быть структурой, которая содержит значение (1, 2, 3 или а, б, в) и список, множество указателей на элементы другого списка.


Название: Re: Выбор модели работы с данными
Отправлено: Igors от Февраль 07, 2015, 09:41
Вообще-то настоящий кайф начинается когда в undo надо восстановить разорванные связки  :)

Здесь есть смысл работать по "ID" - уникальный ключ объекта. Хранится мапа, напр <ID, QPointer <QObject> >. Объект знает на какие ID он ссылается и какие на него. При удалении объекта эл-ты из мапы не удаляются. Объект может получить указатель по ID, но не должен этот указатель постоянно хранить.