QList vs QVector revisitado
Minha pergunta é basicamente quando escolherQVector
e quando escolherQList
como seu recipiente Qt. O que eu já sei:
Para a maioria dos propósitos, o QList é a classe correta a ser usada. Sua API baseada em índice é mais conveniente que a API baseada em iterador do QLinkedList e geralmente é mais rápida que o QVector devido à maneira como armazena seus itens na memória. Também se expande para menos código no seu executável.
O mesmo está escrito nas perguntas e respostas muito populares:QVector vs QList. Também favorece o QList.
Mas: na recente Cúpula Mundial Qt 2015, o KDAB apresentou "Por que o QList é prejudicial", isso é basicamente aqui:
Não use QList, use Q_DECLARE_TYPEINFO
Tanto quanto eu entendo a idéia é queQList
para quase todos os tipos é ineficiente ao alocar novos elementos no heap. Cada vez que você adiciona um novo elemento, ele chamanew
(uma vez por elemento) e isso é ineficiente em comparação comQVector
.
É por isso que agora estou tentando entender: éQVector
qual devemos escolher como contêiner padrão?