QList vs QVector revisited
Mi pregunta es básicamente cuándo elegirQVector
y cuando elegirQList
como su contenedor Qt. Lo que ya sé:
Para la mayoría de los propósitos, QList es la clase correcta para usar. Su API basada en índices es más conveniente que la API basada en iteradores de QLinkedList, y generalmente es más rápida que QVector debido a la forma en que almacena sus elementos en la memoria. También se expande a menos código en su ejecutable.
Lo mismo está escrito en estas preguntas y respuestas muy populares:QVector vs QList. También favorece QList.
Pero: en la reciente Qt World Summit 2015 KDAB presentó "Por qué QList es dañino", esto es básicamente aquí:
No use QList, use Q_DECLARE_TYPEINFO
Por lo que yo entiendo, la idea es queQList
para casi todos los tipos es ineficiente al asignar nuevos elementos en el montón. Cada vez que agrega un nuevo elemento, llamanew
(una vez por elemento) y esto es ineficiente en comparación conQVector
.
Es por eso que ahora estoy tratando de entender: ¿esQVector
¿Cuál deberíamos elegir como contenedor predeterminado?