Pregunta ¿Puedo confiar en la evaluación de cortocircuito para verificar los límites del vector en C ++?


¿Es aceptable el siguiente código?

if(vector.size() > 0 && vector[0] == 3) {
}

¿O existe la posibilidad de que se bloquee cuando el vector esté vacío? No me he dado cuenta de que esto sucede, pero me preocupa que todavía sea posible.


10
2017-12-20 21:28


origen


Respuestas:


Sí, eso funciona, pero sería más idiomático decirlo !vector.empty() && vector[0] == 3: Eso funcionará para todos los contenedores con la máxima eficiencia, por lo que nunca es peor, a veces mejor y siempre más legible.


11
2017-12-20 21:31



Sí, puede confiar en el operador incorporado && para cortocircuitar. Eso es parte de su especificación.


14
2017-12-20 21:29