Здравствуйте, Mamut, Вы писали:
M>Доброе время суток.
M>Интересует идеологически правильное создание виртуальных списков.
M>Задача: Необходим список, могущий отображать элементы, количество которых может изменяться за время существования списка (из-за фильтров, изменения данных, откуда берется список и т.п.) Также необходима возможность сортировки списка по различным критериям.
M>Интересует не готовое решение, а общий подход к решению такой проблемы.
Мне очень нравится сама идея виртуальных списков, так как позволяет отделить отображение данных и непосредственную работу с данными (хранение, сортировка, фильтрация). Поэтому вирт. списки испольую часто.
Обычно делаю следующим образом:
Есть класс storage, который хранит все данные.
Есть класс recordset, который хранит итераторы storage (typedef std::vector<storage::iterator> recordset)
у storage есть различные функции обработки (sort, select(filter) ...часто можно сделать одну функцию execute(recordset&, const query&) ). которая заполняет recordset.
Вид который является владельцем вирт. списка хранит у себя recordset.
Примерно так. Идеологическую правильность не гарантирую
M>Буду благодарить оценками, если пнете меня в нужном направлении.
Ничяго не надо