c++ prüfen Sie alle array-Werte auf einmal
was ich tun möchten, ist ein array von bools, um zu sehen, wenn 3 oder mehr von Ihnen wurden auf true gesetzt. Der einzige Weg, ich kann denken, dies zu tun ist die Verwendung einer if-Anweisung für jede mögliche Kombination die es gibt viel, weil es zehn bools. Dosis jemand irgendwelche Vorschläge haben, wie man am besten, dies zu tun.
- Danke Jungs, die geholfen hatten, zum Bearbeiten der Antwort ein bisschen, weil es war innerhalb einer while-Schleife, aber außer, dass es perfekt funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die viel einfachere Möglichkeit wäre eine Schleife über das array:
Wäre dies der einfachste Weg:
Problem ist nur es hält zählen auch, nachdem es gefunden hat, 3. Wenn das ein problem ist, dann würde ich sharptooth ' s Methode.
Seite Hinweis
Habe ich beschlossen, Mode ein Algorithmus im Stil von
std::all_of/any_of/none_of
für meine persönliche Bibliothek, vielleicht finden Sie es nützlich:Für Ihren Zweck, Sie würde es verwenden, wie diese:
std::
wie ich oben. Oder Sie haben eineusing
Erklärung in der Datei.Wenn Sie ein array-element in den Wert TRUE hat, können Sie Inkrementieren einen globalen Zähler. Das wird der einfachste Weg. An jedem Punkt in Ihrem code, dem globalen array wird Ihnen sagen, die Anzahl der wirklichen Elemente im Array.
Andere Sache - wenn Sie halten-bis zu 32 bool-Werte, Sie können eine einzelne int-variable. int ist 32 bit (in Win32), und Sie können speichern 32 bool.
Wenn es ein array ist, was Sie tun, ist die Schleife über Sie, und die Anzahl der Wahrheiten. Aber ich fürchte, du meinst das bitpattern von einer Art, richtig?
Warum nicht einfach zählen die Anzahl der Wahrheiten, und dann etwas tun, wenn die Zahl 3 oder höher:
Können Sie eine Schleife durch und bauen eine bit-Maske, die Darstellung des Arrays, dann vergleichen Sie gegen bis zu
CHAR_BIT * sizeof (unsigned long)
parallel:Davon ausgegangen, dass Sie suchen Muster, nicht nur wollen, um die Anzahl der
true
flags im array.Nur mit einer Schleife durch das array zählen der Anzahl von bools true festgelegt.
Dann nennen Sie es wie so
Store die bools als bits in einem integer. Dann bewerben Sie sich eines der bit twiddling hacks.