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.