La diferencia entre contenedores como QList y QVector
Éstas se denominan colectivamente clases contenedoras y tienen métodos y propiedades similares para su uso. La principal diferencia entre ellos radica en la forma en que almacenan y operan los datos internamente, es decir, los algoritmos son diferentes.
Debido a que los algoritmos son diferentes, requieren diferente tiempo y espacio al procesar grandes cantidades de datos y, a medida que aumenta la magnitud de los datos, la brecha se vuelve más notoria. En términos generales, para datos a pequeña escala, la diferencia no es muy obvia y puede usarse de manera informal. En cuanto a la cantidad de datos en la que la diferencia se vuelve obvia, puede usar código para generar datos para realizar pruebas.
Las características principales de las clases contenedoras en Qt están aquí:
La clase QVector es una clase de plantilla que proporciona matrices dinámicas.
QVectorlt;Tgt; es una especie de clase contenedora ordinaria de Qt. Almacena cada uno de sus objetos en una memoria contigua y puede acceder a ellos rápidamente utilizando números de índice. QListlt; Operaciones como prepend() e insert() son generalmente más rápidas que QVector debido a la diferencia en la forma en que QList almacena sus objetos (complejidad algorítmica). Además, su API basada en índices es más conveniente de usar que la API basada en iteradores de QLinkedList. Finalmente, el código del programa se expande menos cuando se ejecuta.
l QLinkedList, cuando necesita usar una lista enlazada real y requiere que el objeto se inserte en el medio de la lista dentro de un tiempo constante, y prefiere usar un iterador en lugar de un número de índice para acceda al objeto, esta vez use QLinkedList!
l QVector, use QVector si desea almacenar su objeto en una memoria contigua, su objeto es más grande que un puntero y desea evitar insertar individualmente el objeto en la cabeza del montón.
l QVarLengthArray, si desea un contenedor de tamaño variable de bajo nivel, QVarLengthArray es suficiente. ¡Su ventaja es que es rápido!