У меня используется мьюченный std::unordered_map ну чтобы threadsafe был и данные добавляются при этом формируется ключ, чтобы
если уже такие данные есть до мы просто их обновляем.
не вижу особо проблем - в модели у тебя все равно будет вектор/дек так как ты в какой-то момент захочешь сортировку по колонкам делать и менять содержимое элементов
надо только аккуратно держать в синке вектор с мапой
в целом можно избежать вставки в середину лайфхаком - всегда добавлять новое в конец (beginInsertRows) а потом пересортировывать (вызывая в просессе layoutAboutToBeChanged/layoutChanged)
Делать фулл reset не очень удобно на практике так как полностью перерисоывает вьюпорт, сбрасывает селекшн.
Вьюша же рисует только то что попадает во вьпорт и если ряды добавляются вне его то никаких перерисовок не будет
Здесь как ты советуешь планирую сделать что-то типа
C++ (Qt)
std::mutex m;
std::unordered_map<Key, std::shared_ptr<T>> map;
std::deque<shared_ptr<T>> q;
И получается если размер deque изменился то соответственно мы делаем beginInsertRows - endInsertRows а если нет обновляем данные.
Т.е ниже у меня был vector, теперь будет deque
Надеюсь правилно тебя понял)