"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je comparer efficacement une variable avec plusieurs valeurs en C ++?

Comment puis-je comparer efficacement une variable avec plusieurs valeurs en C ++?

Publié le 2025-03-13
Parcourir:539

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

Comparant une variable à plusieurs valeurs efficacement

Souvent dans la programmation, il est nécessaire de vérifier si une variable correspond à l'une de nombreuses options. Cela peut être réalisé grâce à diverses méthodes, mais il est essentiel de hiérarchiser l'efficacité.

méthodes inefficaces

tente de comparer une variable à plusieurs valeurs à l'aide d'opérateurs logiques comme ou peut conduire à un code inefficace. Par exemple:

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

Cette approche évalue chaque traitement logique (1 || 2, 2 || 3) séparément, qui peut entraîner un traitement gaspillé. std :: initializer_list. La fonction de modèle suivante prend une variable et une liste d'initialisateur de correspondances potentielles:

modèle bool is_in (const t & amp; v, std :: initializer_list lst) { return std :: find (std :: begin (lst), std :: end (lst), v)! = std :: end (lst); } Maintenant, vous pouvez l'utiliser comme:

if (is_in (num, {1, 2, 3})) {do qui type:

template 
bool is_in(const T& v, std::initializer_list lst)
{
    return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);
}

Cette fonction de modèle utilise un transfert parfait pour évaluer chaque comparaison efficacement, résultant en un code qui fonctionne à égalité avec des comparaisons manuscrites.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3