toneladas tipos precio pies mide metros medidas cuanto contenedores contenedor capacidad c++ stl

c++ - tipos - ¿Qué obtengo del frente() del contenedor estándar vacío?



medidas de contenedores en metros (5)

Si front() devuelve una referencia y el contenedor está vacío, ¿qué obtengo, una referencia indefinida? ¿Significa que necesito marcar empty() antes de cada front() ?


Comportamiento indefinido


Obtienes un comportamiento indefinido.

Para obtener el uso de control de rango en (0). Si esto falla, obtiene una excepción out_of_range .


Obtienes un comportamiento indefinido: debes verificar que el contenedor contenga algo usando empty () (que verifica si el contenedor está vacío) antes de llamar a front ().


Sí, puedes usar ''en'' como lo mencionó Graham en lugar de usar el frente.

Pero, en (0) solo está disponible para algunos contenedores - vectores, deque y no para otros - lista, cola, pila. En estos casos, debe recurrir a la seguridad del cheque "vacío".


Siempre debe asegurarse de que su contenedor no esté vacío antes de llamar a front () en esta instancia. Llamar a empty () como guardia segura es bueno.

Por supuesto, dependiendo del diseño de su programa, tener siempre un contenedor no vacío podría ser una declaración invariante que le permite evitar y guardar la llamada vacía () cada vez que llame a front (). (¿o al menos en alguna parte de tu código?)

Pero como se indicó anteriormente, si desea evitar el comportamiento indefinido en su programa, conviértalo en un invariante fuerte.