¿Hay algún método POP_FRONT en c ++ std :: vector?
No ¿Es la respuesta rápida a esta consulta?. Los vectores no tienen un método POP_FRONT incorporado en la biblioteca estándar C ++, a diferencia de otras clases de contenedores como Deque y Lista. El principio de diseño fundamental de los vectores, que promueve un acceso aleatorio rápido a los elementos, es la causa de esta ausencia. La eliminación del primer elemento requiere un cambio de todos los componentes siguientes ya que los vectores almacenan sus elementos en un bloque de memoria contiguo.
Es esencial buscar pop_back Para obtener por qué pop_ no está disponible en std :: vector. Un método vectorial común llamado pop_back Elimina el componente final del contenedor. Esto se logra ejecutando el destructor del miembro que fue eliminado y bajando el tamaño del vector por uno. A medida que los vectores se expanden desde su espalda, eliminar el componente final es una operación simple que no implica reubicar ningún otro elemento. Sin embargo, eliminar el elemento inicial haría que todos los componentes posteriores muevan un espacio hacia la izquierda. Dado que este procedimiento copia cada elemento vectorial, es increíblemente ineficiente, especialmente para los grandes vectores. El pop_ Por lo tanto, se excluye de std :: vector para evitar que las operaciones vectoriales se ralenten.
Alternativas del método POP_FRONT en C++
Existen numerosas formas de eliminar componentes de la parte delantera de un vector a pesar de la falta de pop_ método.
1: Borrar método
Una técnica es utilizar el borrar el método en el elemento inicial del vector. El borrar el método modifica los componentes restantes para reflejar la eliminación de un elemento o conjunto de elementos del vector. Por lo tanto, podemos usar la siguiente línea de código en C ++ para lograr el mismo comportamiento que pop_:
#incluir
#incluir
plantilla
void pop_front (std :: vector& v)
if (V.size ()> 0)
V.borrar (V.comenzar());
int main ()
std :: vectornums = 5,6,7,8,9;
pop_front (nums);
para (int i: nums)
std :: cout << i << ";
regresar 0;
En el código anterior, estamos usando el borrar() funcionar como una alternativa de pop_front () Para eliminar el primer elemento de un vector inicializado. Hemos definido una función nombrada pop_front (), y en la función, estamos usando el comenzar() y borrar() Funciones para eliminar el primer elemento del vector.
Producción
2: Método Deque
Otro contenedor en la biblioteca estándar de C ++ es el Deque, que ofrece la capacidad de un contenedor dinámico similar a la matriz con la capacidad adicional de agregar y eliminar elementos de la parte delantera y trasera. Usando un Deque (cola de doble extremo) en lugar de un vector hay un sustituto adicional de pop_. Entonces, podemos usarlo para lograr el mismo comportamiento que pop_:
#incluir
#incluir
usando el espacio de nombres STD;
int main ()
depararMydeque;
Mydeque.push_front (4);
Mydeque.push_front (5);
Mydeque.push_front (6);
Mydeque.pop_front ();
para (auto it = mydeque.comenzar(); él != mydeque.fin(); ++ it)
cout << " << *it;
En el código anterior, estamos usando un push_front () función para impulsar los valores en un deque y un pop_front () función para eliminar el primer elemento del deque.
Producción
Conclusión
Debido a su estructura de memoria interna y principios de diseño, std :: vector en c ++ no tiene un pop_ método. Sin embargo, hay varias técnicas adicionales, como el uso de deparar y borrar Métodos que se pueden usar para eliminar elementos del frente del contenedor. Al seleccionar el mejor enfoque para su implementación, los programadores deben comprometerse entre conveniencia y eficiencia.