Gibt es eine effizientere Art und Weise in C++
die Anzahl der Zeichen in einem string
die ASCII
Wert ihres ganzen Zahl ist, andere oberhalb einer bestimmten Grenz zu zählen als in einer Schleife eines char
zu einer Zeit Auswertung über die gesamte string
?zählt, wie viele Zeichen oberhalb einer ganzen Zahl Cutoff
Antwort
Sie könnten parallelisieren (threads) oder vektorisieren (SSE-Vektor-Anweisungen) ich denke, obwohl mit Optimierungen ausgereizt werden einige Compiler eine einfache Prüfschleife wie diese für Sie vektorisieren, so dass explizite Vektorisierung nicht benötigt würde.
Die Ersparnisse sind jedoch wahrscheinlich winzig; Für eine Aufgabe, die so einfach ist, ist die Zeichenfolge entweder so klein, dass Optimierungen nicht hilfreich sind, oder Sie sind wahrscheinlich an die Speicherbandbreite gebunden. die CPU kann durch eine Schnur wie diese ziemlich verdammt schnell fließen.
Das heißt, es gibt keinen wirklichen Grund zu stören. std::countif
wird für einfachen Code zu machen, so, wenn Sie (durch Profilierung) bewiesen haben, dass der Code zu langsam ist, es einfach zu verwenden:
int num_above_a = std::count_if(v.begin(), v.end(), [](unsigned char c){return c > 'a';})
Wie drescherjm sagte, was Sie wollen, ist std::count_if
. Zum Beispiel finden Sie alle Zeichen, die einen ASCII-Wert größer als die von ‚3‘:
std::string s = "12345";
const char value = '3';
int count = std::count_if(s.begin(), s.end(),
[](const char& a) { return a > value; });
- 1. Finden der ganzen Zahl einer Zahl
- 2. Wie man Zeichen zählt
- 3. Wie extrahiert man das Vorzeichen einer ganzen Zahl in Ruby?
- 4. erhalten nächsten Zehnstellige Zahl oberhalb und unterhalb einer beliebigen Anzahl
- 5. Erhalten letzten drei Ziffern einer ganzen Zahl
- 6. Beispiel einer zufälligen ganzen Zahl in Rcpp
- 7. Drop-Teil einer ganzen Zahl in R
- 8. Anzeige einer ganzen Zahl in umgekehrter Reihenfolge
- 9. Drucken einer ganzen Zahl in Englisch
- 10. Parse eine Dezimalzahl von einer ganzen Zahl
- 11. Gefundene Bits einer ganzen Zahl finden
- 12. Update einer ganzen Zahl zwischen Funktionen
- 13. Letzte Nummer einer ganzen Zahl entfernen
- 14. mit einer ganzen Zahl in mehreren Methoden
- 15. Formatieren einer ganzen Zahl in C++
- 16. Teilen einer ganzen Zahl in einzelne Ziffern
- 17. Java vorbereitet wie Anweisung mit einer ganzen Zahl
- 18. Wie zählt man die Anzahl der Ziffern einer Zahl in einer Druckanweisung?
- 19. Effiziente Datenstruktur zum Speichern einer Zeichenfolge, einer ganzen Zahl und einer reellen Zahl für jeden Datensatz
- 20. Wie rekursiv dekodiert man ein Wort mit einer ganzen Zahl?
- 21. Wie Anzahl von Bytes in einer ganzen Zahl zählen
- 22. Wie durchläufe ich die Ziffern einer ganzen Zahl?
- 23. Wie definiere ich einen Array-Wert aus einer ganzen Zahl?
- 24. Wie finde ich die maximale Häufigkeit einer Zahl einer ganzen Zahl?
- 25. Wie man eine zu viele Beziehungen zählt
- 26. Wie viele spezifische Zeichen in einer Liste
- 27. Echo einer ganzen Zahl aus einer mySQL-Datenbank
- 28. Vergleichen des Tags einer Ansicht mit einer ganzen Zahl
- 29. Wie man Zeichen in C# aus einer richtextbox zählt
- 30. Aufteilen von ganzen Zahlen zwischen verschiedenen Zeichen
Sie meinen, andere als 'std :: countIf()' – drescherjm
Nun, wenn Sie eine Zeichenfolge haben, und Sie haben Um zu bestimmen, ob jedes Zeichen in der Kette eine bestimmte Anforderung erfüllt oder nicht erfüllt, müssen Sie herausfinden, wie Sie einige fundamentale Gesetze der Physik des Universums, in dem wir leben, brechen können, ohne tatsächlich alle betrachten zu müssen Zeichen in der Zeichenfolge. –