std: vector funciona utilizando una matriz continua de elementos, a medida que se expande, tiene que copiar y reasignar memoria. Esto ocurre aproximadamente cada vez que duplica su tamaño, por lo que pasar de 16 a 17 elementos significa que debe reasignar suficiente espacio para 32 elementos y luego copiarlo todo.
Un vector es muy rápido para el acceso, especialmente secuencial, ya que eso es ayudado masivamente por el precaché en los procesadores modernos que evita los tiempos muy lentos (comparativamente) del acceso ram vs caché.
Una deque utiliza una especie de lista de vectores, donde cada uno tiene una determinada longitud. Significa que es mucho más rápido quitar, insertar o agregar al frente. Todavía hay una inconsistencia al agregar nuevos elementos, ya que a veces tendrá que asignar nueva memoria, pero no necesitará copiar todo su contenido.
- ¿Cuál es el algoritmo de fuerza bruta O (n!) Para calcular las rutas más largas?
- Cómo usar el caso del interruptor en Java
- Cómo implementar la ordenación de inserción recursiva usando una lista vinculada
- Cómo calcular el número 50 usando números binarios
- Cómo escribir un algoritmo para continuar esta secuencia: x, y, xx, xy, yx, yy, xxx
En general, si los datos deben leerse mucho y no eliminarse ni moverse, el vector es el camino a seguir y si necesita usarlo como una cola o si necesita modificarlo, a menudo el camino es deque. De hecho, en las pruebas, deque a menudo supera a las listas vinculadas que fueron diseñadas para esa operación.