c++ vector stl sgi

c++ - ¿Cómo entender la implementación del vector pop_back?



stl sgi (1)

Actualmente estoy pensando por qué STL implementa el vector pop_back de esta manera. ¿Por qué movemos el prólogo del puntero de acabado primero y luego usamos el puntero de acabado para desasignar el espacio del último elemento?

void pop_back() { --_M_finish; destroy(_M_finish); }


Lo más probable es que _M_finish sea ​​el puntero final, que apunta al elemento justo después del último elemento. Después de que el puntero se haya movido un paso hacia atrás, señalará al último elemento actual que se va a eliminar. Y después de que ese elemento se elimine, _M_finish continuará apuntando al mismo elemento que ahora es nuevamente el elemento justo después del último elemento.