Einige Male in meinem Programm musste ich prüfen, ob eine Variable eine von vielen Optionen war. Zum Beispiel
%Vor%Ich habe mich mit ORs herumgeschlagen, aber nichts scheint richtig zu sein. Ich habe es versucht
%Vor%aber es tut nichts. Bitte helfen Sie! Vielen Dank im Voraus.
P.S. Ich muss zwischen mehreren Gruppen unterscheiden. Zum Beispiel ...
%Vor%Wenn die Werte, die Sie überprüfen möchten, ausreichend klein sind, können Sie eine Bitmaske der gesuchten Werte erstellen und dann prüfen, ob dieses Bit gesetzt ist.
Angenommen, Sie interessieren sich für ein paar Gruppen.
%Vor%Dieser Ansatz funktioniert am besten für Werte, die nicht die natürliche Größe überschreiten, mit der Ihre CPU gerne arbeitet. Dies wäre in der heutigen Zeit typischerweise 64, kann aber je nach den spezifischen Gegebenheiten Ihrer Umgebung variieren.
Sie müssen den Vergleich mit jedem Wert durchführen. ZB
%Vor%Sie sollten auch einen Schalter in Erwägung ziehen und Fälle absichtlich fallen lassen (obwohl ich nicht glaube, dass dies die beste Lösung für das ist, was Sie sagen).
%Vor%Ich hatte gerade ein ähnliches Problem und kam zu diesen C ++ 11-Lösungen:
%Vor%Oder als Alternative ohne die rekursiv beendende Methode. Beachten Sie, dass hier die Reihenfolge der Vergleiche nicht definiert ist und dass diese nicht vorzeitig beendet wird, wenn die erste Übereinstimmung gefunden wird. Aber der Code ist kompakter.
%Vor%Für beide Lösungen würde der Code so aussehen:
%Vor%Sie können eine Menge von Ganzzahlen definieren, die gewünschten Werte hinzufügen und dann mithilfe der find-Methode feststellen, ob der betreffende Wert in der Menge
enthalten ist %Vor%Ich musste etwas Ähnliches für enums machen. Ich habe eine Variable und möchte sie gegen eine Reihe von Werten testen.
Hier habe ich eine variadic Template-Funktion verwendet. Beachten Sie die Spezialisierung für const char*
type, sodass is_in( my_str, "a", "b", "c")
das erwartete Ergebnis hat, wenn my_str
speichert "a"
.
Beispielverwendung:
%Vor%Tags und Links c++ variables comparison if-statement