comparando una variable con valores múltiples de manera eficiente
a menudo en la programación, es necesario verificar si una variable coincide con una de varias opciones. Esto se puede lograr a través de varios métodos, pero es esencial para priorizar la eficiencia.
ineficiente métodos
intenta comparar una variable con múltiples valores utilizando operadores lógicos como o puede conducir a un código ineficiente. Por ejemplo:
if (num == (1 || 2 || 3))
Este enfoque evalúa cada expresión lógica (1 || 2, 2 || 3) por separado, que puede dar como resultado un procesamiento desperdiciado.
soluciones eficientes en c 11 one en C1 11. std :: inicializer_list. La siguiente función de plantilla toma una variable y una lista de inicializador de posibles coincidencias:
plantillaahora puede usarlo como:
templateif (is_in (num, {1, 2, 3})) {hacer cosas}bool is_in(const T& v, std::initializer_list lst) { return std::find(std::begin(lst), std::end(lst), v) != std::end(lst); }
if (is_in(num, {1, 2, 3})) { DO STUFF }
c 17 presenta una solución aún más eficiente que funciona excepcionalmente con una solución más eficiente Escriba: plantilla
Esta función de plantilla utiliza el reenvío perfecto para evaluar cada comparación de manera eficiente, lo que resulta en un código que funciona a la par con las comparaciones escritas a mano.
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