Heim > Backend-Entwicklung > C++ > Wie kann ich eine Variable effizient mit mehreren Werten in C vergleichen?

Wie kann ich eine Variable effizient mit mehreren Werten in C vergleichen?

Mary-Kate Olsen
Freigeben: 2025-01-01 01:04:09
Original
342 Leute haben es durchsucht

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

Variablen effizient mit mehreren Werten vergleichen

In bestimmten Szenarien ist es notwendig, eine Variable gleichzeitig mit mehreren Optionen zu vergleichen. Typischerweise greifen Entwickler zum ODER-Operator; Dieser Ansatz führt jedoch häufig zu Komplikationen.

Die ideale Lösung

Im Idealfall suchen wir nach einer bequemen Methode zur Unterscheidung zwischen mehreren Gruppen, wie im folgenden Code veranschaulicht:

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

else if (num = (4,5,6))

else if (num = (7,8,9))
Nach dem Login kopieren

C 11-Lösung verwenden std::initializer_list

In C 11 kann std::initializer_list verwendet werden, um die gewünschte Funktionalität zu erreichen. Durch die Definition einer is_in-Vorlagenfunktion können wir eine Variable effizient mit einer Reihe von Optionen vergleichen:

#include <algorithm>
#include <initializer_list>

template <typename T>
bool is_in(const T& v, std::initializer_list<T> lst)
{
    return std::find(std::begin(lst), std::end(lst), v) != std::end(lst);
}
Nach dem Login kopieren

Dies ermöglicht uns, Vergleiche prägnant durchzuführen:

if (is_in(num, {1, 2, 3})) { DO STUFF }
Nach dem Login kopieren

C 17 Lösung: Effizienter

C 17 hat eine hochoptimierte Lösung eingeführt, die mit allen gut funktioniert Typ:

template<typename First, typename ... T>
bool is_in(First &&first, T && ... t)
{
    return ((first == t) || ...);
}

// ...

// s1, s2, s3, s4 are strings.
if (is_in(s1, s2, s3, s4)) // ...
Nach dem Login kopieren

Diese Version generiert im Gegensatz zum C 11-Gegenstück auch für komplexe Typen wie Zeichenfolgen effizienten Code.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Variable effizient mit mehreren Werten in C vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage