empujando elementos del mismo vector: medidas de seguridad
la seguridad de empujar un elemento desde el mismo vector bisa , que puede invalidar las referencias a los elementos vectoriales existentes. Este problema surge en el siguiente ejemplo:
vector v;
v.push_back(1);
v.push_back(v[0]);
Si el segundo push_back desencadena la reasignación, la referencia a v [0] se vuelve inválida. Para abordar esto, se puede usar el siguiente enfoque:
vector v;
v.push_back(1);
v.reserve(v.size() 1);
v.push_back(v[0]);
llamando a la reserva, solicitamos explícitamente la memoria suficiente, asegurando que no se produzca una reasignación de reasignación durante las inserciones posteriores.
de acuerdo con el estándar C, el comportamiento de Push_back con respecto a las referencias de elementos no se define explícitamente como un defecto, a pesar de que podría conducir a referencias no válidas. Esto se debe a que el estándar requiere vector :: insertar para funcionar correctamente, incluso cuando la inserción cambia las posiciones de otros elementos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3