"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo comparar eficientemente una variable con múltiples valores en C ++?

¿Cómo puedo comparar eficientemente una variable con múltiples valores en C ++?

Publicado el 2025-03-13
Navegar:987

How Can I Efficiently Compare a Variable Against Multiple Values in C  ?

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:

plantilla bool is_in (const t & amp; v, std :: inicializer_list lst) { return std :: find (std :: begin (lst), std :: end (lst), v)! = std :: end (lst); }

ahora puede usarlo como:
template 
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})) {hacer cosas}

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 bool is_in (primero & amp; & amp; primero, t & amp; & amp; ... t) { return ((primero == t) || ...); }

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.

Último tutorial Más>

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