QList vs QVector повторно
Мой вопрос в основном, когда выбиратьQVector
и когда выбратьQList
как ваш контейнер Qt. Что я уже знаю:
Для большинства целей QList является правильным классом для использования. Его API, основанный на индексах, более удобен, чем API, основанный на итераторах QLinkedList, и, как правило, он быстрее, чем QVector, из-за способа хранения своих элементов в памяти. Это также расширяет область кода в вашем исполняемом файле.
Так же написано это очень популярный вопрос и ответ:QVector против QList, Это также одобряет QList.
Но: на недавнем Qt World Summit 2015 KDAB представил «Почему QList вреден», это в основном здесь:
Не используйте QList, используйте Q_DECLARE_TYPEINFO
Насколько я понимаю, идея в том, чтоQList
почти все типы неэффективны при размещении новых элементов в куче. Каждый раз, когда вы добавляете новый элемент, он вызываетnew
(один раз на элемент), и это неэффективно по сравнению сQVector
.
Вот почему сейчас я пытаюсь понять: этоQVector
который мы должны выбрать в качестве контейнера по умолчанию?