Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente vectorial

Código fuente vectorial

No hay redistribución. Pero los siguientes elementos avanzan, por lo que el iterador después del elemento eliminado dejará de ser válido. Por ejemplo, el siguiente código fallará en el modo de depuración y funcionará bien en el modo de lanzamiento; puede ver que la dirección de la matriz no ha cambiado.

#¿Incluir? & ltvector & gt

#¿Contiene? & ltiostream & gt

int? main(){

STD::vector & lt; int & gt? v{? 1,?2,?3,?4,?5,?6,?7?};

¿Coche? ¿pag? =?v.end()? -?2;

std::cout? <<? &v[0]? <<? ¿"\t"? <<? *¿pag? <<? ¿"\t"? <<? &*p? <<? "\n";

v.erase(v.begin()?+?2);

std::cout? <<? &v[0]? <<? ¿"\t"? <<? *¿pag? <<? ¿"\t"? <<? &*p? <<? "\n";

¿Volver? 0;

}v.swap(vector & ltT & gt㈤); Copia V a un nuevo vector (la capacidad de este vector es exactamente la misma que el tamaño de V) y luego cámbialo con V. Debido a que se trata de una variable local, la memoria obtenida de V se liberará al final de esta oración. Al mismo tiempo, después del intercambio, la capacidad y el tamaño de V son los mismos.

Se recomienda echar un vistazo al código fuente o pasar por la depuración para ver el proceso de implementación específico.