"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso comparar com eficiência uma variável com vários valores no C ++?

Como posso comparar com eficiência uma variável com vários valores no C ++?

Postado em 2025-03-13
Navegar:849

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

comparando uma variável com vários valores com eficiência

frequentemente na programação, é necessário verificar se uma variável corresponde a uma das várias opções. Isso pode ser alcançado através de vários métodos, mas é essencial priorizar a eficiência. Por exemplo:

if (num == (1 || 2 || 3)) Esta abordagem avalia cada expressão lógica (1 || 2, 2 || 3) separadamente, que pode resultar em processamento desperdiçado. Utilizando STD :: Initializer_list. A função de modelo a seguir pega uma variável e uma lista inicial de possíveis correspondências:

modelo bool is_in (const t & amp; v, std :: Initializer_list lst) { retornar std :: find (std :: BEGIN (LST), std :: end (lst), v)! = std :: end (lst); }

if (num == (1 || 2 || 3))

if (is_in (num, {1, 2, 3})) {faça ​​material}

mais eficiente solução em c 17

C7 Introduzes ANGRESSENCES ANGUES ANGUNUCES ANS ALTESTEN EXPUTILTEN EXPORTIONS ALVESSENHEN EXCELTION ELESTEM ASSELTUES AS EFFERT ENSTEME TIPO:
template 
bool is_in(const T& v, std::initializer_list lst)
{
    return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);
}
modelo bool is_in (primeiro & amp; & amp; primeiro, t & amp; & amp; ... t) { return ((primeiro == t) || ...); }

Esta função de modelo usa encaminhamento perfeito para avaliar cada comparação com eficiência, resultando em código que executa em pé de igualdade com comparações escradas à mão.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3