¿La operación vectorial es lenta?
1. Vector es muy efectivo cuando solo se agregan o eliminan elementos al final de la secuencia. Es posible insertar elementos al principio y en la mitad del vector, pero es muy ineficiente. Porque desea mover todos los elementos después del punto de inserción y asignar una nueva área de memoria en el almacenamiento libre. Eliminar elementos del principio y del medio también es más lento porque los elementos también se mueven.
2. Para agregar y eliminar elementos en medio de un contenedor de secuencia, se debe utilizar un contenedor de lista. De hecho, usar un contenedor de lista le permite insertar elementos de manera eficiente en cualquier lugar de la secuencia sin mover los elementos existentes, y eliminar elementos de la lista también es más rápido. La principal limitación de los contenedores de listas es que el acceso aleatorio a los elementos es más lento porque es necesario recorrer toda la lista, por lo que el algoritmo sort() de STL no se puede utilizar para las listas porque requiere un iterador que proporcione acceso aleatorio a los elementos.
3. Cree un objeto de eliminación de cola de un tamaño determinado de la misma manera que un contenedor vectorial (como vetcor, los elementos se pueden agregar y eliminar en medio de la secuencia de eliminación de cola. Pero también es más lento porque siempre hay que copiar elementos existentes). La ventaja de Deque sobre el contenedor vectorial es que puede agregar o eliminar objetos de manera eficiente al principio y al final de la secuencia, por lo que cuando necesite estas funciones, debe elegir este tipo de contenedor.
Así que puedes probar el tapón trasero de Deque.