He realizado 3 experimentos diferentes que involucran listas y vectores de C ++.
Aquellos con vectores demostraron ser más eficientes, incluso cuando estaban involucradas muchas inserciones en el medio.
De ahí la pregunta: ¿en qué caso las listas tienen más sentido que los vectores?
Si los vectores parecen más eficientes en la mayoría de los casos, y considerando cuán parecidos son sus miembros, ¿qué ventajas quedan para las listas?
Genere N enteros y colóquelos en un contenedor para que el contenedor permanezca ordenado. La inserción se ha realizado ingenuamente, leyendo elementos uno por uno e insertando el nuevo justo antes del primero más grande.
Con una lista, el tiempo pasa por el techo cuando la dimensión aumenta, en comparación con los vectores.Inserte N enteros al final del contenedor.
Para las listas y los vectores, el tiempo aumentó en el mismo orden de magnitud, aunque fue 3 veces más rápido con los vectores.Inserte N enteros en un contenedor.
Iniciar temporizador.
Ordene el contenedor usando list.sort para listas y std :: sort para vectores. Parar temporizador.
Nuevamente, el tiempo aumenta en el mismo orden de magnitud, pero en promedio es 5 veces más rápido con los vectores.
Podría continuar realizando pruebas y descubriendo un par de ejemplos en los que las listas resultarían mejores.
Pero la experiencia conjunta de ustedes al leer este mensaje podría proporcionar respuestas más productivas.
¿Es posible que haya encontrado situaciones en las que las listas fueron más convenientes de usar o tuvieron un mejor rendimiento?
list
probablemente le vaya mejor si está eliminando muchos elementos. No creo vector
que alguna vez regrese la memoria al sistema hasta que se elimine todo el vector. También tenga en cuenta que su prueba n. ° 1 no prueba el tiempo de inserción solo. Es una prueba que combina búsqueda e inserción. Es encontrar el lugar para insertar donde list
es lento. La inserción real será más rápida que el vector.