Beispiele für C++-Constexpr-Strings

Beispiele Fur C Constexpr Strings



In diesem Artikel geht es um constexpr, eine bemerkenswerte Ergänzung der Programmiersprache C++, die in C++11 eingeführt und in C++14 weiter verbessert wurde und dem Compiler signalisiert, dass eine Variable, eine Funktion oder ein Objektkonstruktor ein Kompilierungskonstruktor ist. Zeitkonstante. Es revolutionierte die Art und Weise, wie die Entwickler die Konstanten erstellen und manipulieren. Mit constexpr können die Entwickler die Ausdrücke und Werte definieren, die unveränderlich sind und während der Kompilierung statt zur Laufzeit ausgewertet werden. Der übergeordnete Vorteil der Integration von constexpr in den Code ist die Garantie der Konstanz.

Wozu dient der C++-Constexpr-String?

Die Verwendung von constexpr kann zu kompakteren und optimierten ausführbaren Dateien führen. Da die Werte im Voraus vom Compiler bestimmt werden, können die resultierenden Binärdateien kleiner sein, was zu einer sparsameren Nutzung der Systemressourcen führt, was wiederum die Leistung der Software auf verschiedenen Plattformen verbessern kann. Ein besonderer wesentlicher Vorteil dieser Funktion ist die Reduzierung der Laufzeitberechnungen. Da Werte wann immer möglich während des Kompilierungsprozesses berechnet werden, ist die Laufzeitauswertung weniger notwendig. Diese Effizienzsteigerung beschleunigt nicht nur die Ausführung, sondern rationalisiert auch den gesamten Programmbetrieb.

Beispiel 1: Verwendung von Constexpr in C++ zur Faktorialberechnung

In diesem Beispiel verwenden wir constexpr, wodurch die Berechnungen zur Kompilierungszeit und nicht zur Laufzeit ausgeführt werden können. Im Zusammenhang mit der Berechnung von Fakultäten kann eine gängige mathematische Operation namens constexpr genutzt werden, um Fakultätswerte während der Kompilierung zu berechnen. Lassen Sie uns den folgenden Code untersuchen und überprüfen und dann die Erklärung des Codes betrachten:







#include

constexpr int Fakultät ( int N ) {

zurückkehren N <= 1 ? 1 : ( N * Fakultät ( N - 1 ) ) ;

}

int hauptsächlich ( ) {

int Auf eins = 5 ;

std :: cout << „Fakultät von“ << Auf eins << ' = ' << Fakultät ( Auf eins ) << std :: endl ;

}

Das angegebene Codebeispiel demonstriert die Verwendung von constexpr zur rekursiven Berechnung der Fakultät einer Zahl. In diesem Beispiel kann der Compiler den Fakultätsausdruck zur Kompilierungszeit auswerten, da die Fakultätsfunktion mit dem constexpr-Bezeichner deklariert und definiert wird. Mit constexpr in einem C++-Programm wertet der Compiler den faktoriellen Ausdruck von 5 zur Kompilierungszeit aus, sodass keine Laufzeitberechnungen erforderlich sind.



Sehen wir uns nun die detaillierte Aufschlüsselung des Codes mit spezifischen Details und Erklärungen an.



Zuerst verwenden wir #include , um die Header-Datei „iostream“ einzubinden, die wesentliche Eingabe- und Ausgabefunktionen wie „std::cout“ zum Drucken auf der Konsole bereitstellt.





Anschließend gehen wir zur Funktion „factorial()“ (rekursiv) über, die „constexpr intfactorial(int n)“ ist. Diese Funktion „factorial()“ definiert eine rekursive Funktion, die die Fakultät einer „n“-Ganzzahl berechnet. Constexpr impliziert, dass sich Leistungsoptimierungen aus der Auswertung der Funktion während der Kompilierung ergeben können.

Die Rückgabe n <= 1 ? 1: Die Zeile (n * Fakultät(n – 1)) verwendet einen bedingten Ausdruck für die Rekursion, der besagt, dass, wenn „n“ kleiner oder gleich 1 ist, 1 zurückgegeben wird (Basisfall). Wenn nicht, führt es die Fakultätsberechnung (n! = n * (n-1)!) durch, die die allgemeine Formel zur Berechnung der Fakultät darstellt, indem es sich selbst wiederholt mit „n – 1“ aufruft und das Ergebnis dann mit „n“ multipliziert “. Diese Linien wirken wie ein Gatekeeper für die Faktorberechnung. Es prüft, ob die Zahl auf der Basisebene liegt und gibt in diesem Fall 1 zurück. Wenn nicht, wird eine Kettenreaktion von Funktionsaufrufen ausgelöst, die jeweils mit kleineren Zahlen arbeiten, bis der Basisfall erreicht ist. Anschließend werden die Ergebnisse in umgekehrter Reihenfolge miteinander multipliziert. Das Folgende ist die Ausgabe des Codes als Referenz:



Beispiel 2: Zählen der Kleinbuchstaben zur Demonstration des C++-Constexpr-Strings

Hier lernen wir, wie man die Anzahl der Kleinbuchstaben mithilfe einer countexpr-Zeichenfolge zählt. In diesem Beispiel besteht der Zweck darin, mithilfe der constexpr-Funktion die Anzahl der Kleinbuchstaben in einer bestimmten Zeichenfolge zu zählen, um die Laufzeitberechnung zu verkürzen. Die als constexpr deklarierte Funktion countLowercase() verwendet einen „string_view“-String als Parameter und durchläuft jedes Zeichen des angegebenen Strings als Eingabe. Für jeden Kleinbuchstaben, auf den wir stoßen, wird die Anzahl erhöht. Das Ergebnis wird dann zur Kompilierungszeit erhalten, wenn die Funktion mit konstanten Ausdrücken arbeitet, was die Effizienz- und Leistungsvorteile der Kompilierzeitauswertung verdeutlicht. Überprüfen Sie zunächst den folgenden Code. Fahren Sie dann mit der ausführlichen Erklärung fort:

#include
#include
Verwenden des Namensraums std ;
constexpr size_t countKleinbuchstaben ( string_view s ) {
size_t zählen = 0 ;
für ( verkohlen C : S ) {
Wenn ( ist tiefer ( C ) ) {
zählen ++;
}
}
zurückkehren zählen ;
}
int hauptsächlich ( ) {
cout << „Gesamtzahl der Kleinbuchstaben in“ Kleinbuchstaben ' sind = '
<< countKleinbuchstaben ( 'Kleinbuchstaben' ) << endl ;
}

Hier ist eine detaillierte Aufschlüsselung des Codes mit einer Erläuterung jeder Zeile:

Das #include ist enthalten, um die Standard-Eingabe-/Ausgabe-Stream-Bibliothek zum Drucken der Nachrichten zu verwenden. Das #include enthält die Klasse „string_view“ für eine effiziente String-Manipulation.

In der Funktion countLowercase() zählt die Funktion „constexpr size_t countlower(string_view s)“ die Kleinbuchstaben in einer bestimmten String-Ansicht. Der int main() ist der Einstiegspunkt des Programms, der eine Meldung ausgibt, die die Anzahl der Kleinbuchstaben in „LoWeR Case LETtErS“ angibt, und die countLowercase()-Funktion mit „LoWeR Case LETtErS“ als Eingabe aufruft und das Ergebnis ausgibt. Sehen Sie sich die folgende Ausgabe des Programms an:

Beispiel 3: Array-Demonstration durch Verwendung des C++-Constexpr

Eine Array-Demonstration zeigt, wie die Arrays, bei denen es sich um strukturierte Sammlungen von Elementen desselben Datentyps handelt, in einer Programmiersprache erstellt, darauf zugegriffen und bearbeitet werden. Im Folgenden erklären wir dies anhand eines Codierungsbeispiels, in dem das Programm ein einfaches Beispiel für die Array-Initialisierung und -Manipulation zur Kompilierungszeit bietet.

Eine Array-Demonstration veranschaulicht das Konzept von Arrays – einer strukturierten Sammlung von Elementen, die denselben Datentyp haben – und wie sie mithilfe einer Programmiersprache erstellt, aufgerufen und bearbeitet werden können. Im folgenden Codierungsbeispiel zeigen wir, wie man ein Array zur Kompilierungszeit initialisiert, seine Größe berechnet und die Elemente des angegebenen Arrays ausgibt. Sehen Sie sich den folgenden Code an und fahren Sie mit der Erklärung fort:

#include
Verwenden des Namensraums std ;
int hauptsächlich ( ) {
constexpr int arrayint [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr int size_array = Größe von arrayint / Größe von ( int ) ;
cout << „Die Länge des Arrays ist =“ << size_array << endl ;
cout << „Die Elemente im Array sind =“ ;
für ( int ich = 0 ; ich < size_array ; ++ ich ) {
cout << arrayint [ ich ] << ' ' ;
}
}

Dieses Programm initialisiert ein constexpr-Array, berechnet seine Länge zur Kompilierungszeit und gibt dann die Länge und Elemente des Arrays auf der Konsole aus. Consexpr stellt sicher, dass das Array und seine Eigenschaften zur Kompilierungszeit bestimmt werden. Lassen Sie uns den Code aufschlüsseln und die spezifischen Details nacheinander erklären:

Um die Standard-Eingabe-Ausgabe-Stream-Bibliothek einzubinden und die Verwendung von Funktionen wie „cout“ für die Ausgabe zu ermöglichen, wird #include aufgerufen. Das Programm beginnt mit der Ausführung der Funktion int main(). Innerhalb der Funktion main() wird das Array „arrayint[]“ mit einer Größe von 9 mit einer constexpr int arrayint[9]-Anweisung definiert. Das Array wird mit fünf Zahlen initialisiert und die restlichen Elemente bleiben implizit 0. The int length_a = sizeof arrayint / sizeof(int); berechnet die Größe des „arrayint“ in Bytes.

Eine „for“-Schleife durchläuft die Elemente des „arrayint[]“-Arrays und die Werte werden dann auf der Konsole ausgegeben. Sehen wir uns die folgende Ausgabe des angegebenen Codes an:

Abschluss

Die Einführung und Weiterentwicklung des Schlüsselworts constexpr in C++ hat den Umgang mit konstanten Ausdrücken und Werten revolutioniert. In diesem Artikel wurden drei praktische Beispiele untersucht, die die Leistungsfähigkeit von constexpr bei der Berechnung von Fakultäten, beim Zählen der Kleinbuchstaben und beim Initialisieren der Arrays zur Kompilierungszeit demonstrierten. Zu den wichtigsten Erkenntnissen gehören eine verbesserte Leistung, kürzere Laufzeitberechnungen und eine verbesserte Speichereffizienz. Consexpr ist ein wertvolles Hilfsmittel für die Erstellung zuverlässiger, konstanter Entitäten innerhalb einer Codebasis, sorgt für Unveränderlichkeit und trägt zu schlankeren und effizienteren Programmen bei.