У меня есть много (иерархических) данных, которые я показываю в TreeView (может быть около 20 тыс. Элементов или более, включая дочерние элементы). Особая проблема с моими данными заключается в том, что каждый объект, отображаемый в древовидном представлении, может существовать во многих древовидных элементах. Под этим я подразумеваю, что у меня может быть такая иерархия:
Item_A -> Item_B -> ItemC
Item_B -> Item_C
ItemC
Предположим, что Item_A
содержит Item_B
, который содержит Item_C
, как показано выше. Это означает, что мой список также покажет иерархию Item_B
и Item_C
. Теперь посмотрим, что происходит с объектом, показанным как Item_B
(например, изменение имени). Тогда, конечно, оба пункта
должен быть обновлен. Теперь рассмотрим тысячи элементов в древовидной структуре со сложной иерархией. Какую стратегию вы бы использовали для обновления дерева? Скорость, конечно, является главной заботой здесь, но также и простота использования и обслуживания. В настоящее время я храню внутренние отображения элементов списка на объектах и наоборот, чтобы быстро находить и обновлять элементы. Это правильная стратегия? Восстанавливая список после каждого обновления, я могу выбросить много кода, но я не знаю, какие пути элементов были расширены или свернуты. Как я мог решить эту проблему? Должен ли я хранить расширенные пути во внутреннем контейнере?
Спасибо.
PS: язык программирования - C ++, а библиотека GUI - QT3.