Я создал модель QListView, наследуя от QAbstractListModel и используя QVector в качестве внутреннего контейнера. Моя модель позволяет добавлять текст в конец списка, а также позволяет удалять элементы с фронта. Операции стирания переносятся (т. Е. Я стираю около 10% предметов с фронта каждый раз, когда список становится слишком большим).Что является наиболее подходящим контейнером Qt для QAbstractListModel и QListView
Что такое лучший контейнер для использования?
В настоящее время я использую QVector, так как я ожидаю, что производительность (смежная макет памяти) будет лучше в этом случае по сравнению с чем-то вроде QList. Однако я не уверен, что Qt обращается к контейнеру внутри и независимо от того, является ли контейнер непрерывным, имеет какое-либо значение.
Вам нужно использовать контейнер Qt? Возможно, идеальным здесь является только стандартная библиотека 'std :: deque' библиотеки C++. 'QVector' очень похож на' std :: vector' и требует удаления во времени. 'QList' довольно похож на указатели хранения QVector, имеет фрагментацию памяти. Оба «QVector» и «QList» требуют линейного удаления, чтобы удалить элементы с фронта - это часть убийцы. Вам нужен контейнер, в котором как нажимной назад, так и поп-фронт являются постоянным временем и в идеале без связанной структуры, которая распределяет каждый узел отдельно. –