Exemple de șiruri de caractere C++ Constexpr

Exemple De Siruri De Caractere C Constexpr



Acest articol va discuta despre constexpr, o completare notabilă la limbajul de programare C++ care este introdus în C++11 și îmbunătățit în continuare în C++14 și semnalează compilatorului că o variabilă, o funcție sau un constructor de obiect este un compilator. timpul constant. A revoluționat modul în care dezvoltatorii creează și manipulează constantele. Prin constexpr, dezvoltatorii pot defini expresiile și valorile care sunt imuabile și evaluate în timpul compilării, mai degrabă decât în ​​timpul execuției. Beneficiul general al încorporării constexpr în cod este garanția sa de constanță.

Care este utilizarea șirului C++ Constexpr?

Utilizarea constexpr poate duce la fișiere executabile mai compacte și optimizate. Deoarece valorile sunt determinate în prealabil de către compilator, binarele rezultate pot fi de dimensiuni mai mici, realizând o utilizare mai economică a resurselor sistemului care, la rândul său, poate îmbunătăți performanța software-ului pe diverse platforme. Un avantaj semnificativ deosebit al acestei caracteristici este reducerea pe care o aduce calculelor de rulare. Deoarece valorile sunt calculate în timpul procesului de compilare ori de câte ori este posibil, evaluarea timpului de rulare devine mai puțin necesară. Această creștere a eficienței nu numai că accelerează execuția, ci și eficientizează operațiunile generale ale programului.

Exemplul 1: Utilizarea Constexpr în C++ pentru calcul factorial

În acest exemplu, vom folosi constexpr care permite ca calculele să fie efectuate la compilare, mai degrabă decât la run-time. În contextul calculării factoriale, o operație matematică comună, care este constexpr, poate fi folosită pentru a calcula valorile factoriale în timpul compilării. Să examinăm și să revizuim următorul cod și apoi să ne uităm la explicația codului:







#include

constexpr int factorial ( int n ) {

întoarcere n <= 1 ? 1 : ( n * factorial ( n - 1 ) ) ;

}

int principal ( ) {

int pe unu = 5 ;

std :: cout << „Factorial de” << pe unu << ' = ' << factorial ( pe unu ) << std :: endl ;

}

Exemplul de cod dat demonstrează utilizarea constexpr pentru a calcula factorialul unui număr într-un mod recursiv. Compilatorul este capabil să evalueze expresia factorială la momentul compilării în acest exemplu deoarece funcția factorială este declarată și definită cu specificatorul constexpr. Folosind constexpr într-un program C++, compilatorul evaluează expresia factorială a lui 5 în timpul compilării, eliminând nevoia de calcul în timpul execuției.



Acum, să vedem defalcarea detaliată a codului cu detalii și explicații specifice.



În primul rând, folosim #include pentru a încorpora fișierul antet „iostream” care oferă funcționalități esențiale de intrare și ieșire, cum ar fi „std::cout” pentru tipărirea pe consolă.





După aceea, trecem la funcția factorial() (recursivă) care este „constexpr int factorial(int n)”. Această funcție factorial() definește o funcție recursivă care calculează factorialul unui număr întreg „n”. Constexpr implică faptul că optimizările de performanță pot rezulta din evaluarea funcției în timpul compilării.

Randamentul n <= 1 ? 1 : linia (n * factorial(n – 1)) folosește o expresie condiționată pentru recursivitate care afirmă că dacă „n” este mai mic sau egal cu 1, returnează 1 (cazul de bază). Dacă nu, efectuează calculul factorial (n! = n * (n-1)!), care este formula generală de calcul a factorialului, numindu-se în mod repetat cu „n – 1” și apoi înmulțind rezultatul cu „n ”. Aceste linii acționează ca un gatekeeper pentru calculul factorial. Verifică dacă numărul este la nivelul de bază și returnează 1 dacă da. Dacă nu, declanșează o reacție în lanț de apeluri de funcție, fiecare lucrând pe numere mai mici până când este atins cazul de bază. Apoi, rezultatele sunt înmulțite împreună în ordine inversă. Următorul este rezultatul codului pentru referință:



Exemplul 2: Numărarea literelor mici demonstrând șirul C++ Constexpr

Aici, vom învăța cum să numărăm numărul de litere mici folosind un șir countexpr. În acest exemplu, scopul este de a număra numărul de litere mici dintr-un șir dat folosind caracteristica constexpr pentru a reduce timpul de calcul. Funcția countLowercase(), declarată ca constexpr, ia un șir „string_view” ca parametru și iterează prin fiecare caracter al șirului dat ca intrare. Pentru fiecare literă mică pe care o întâlnim, numărul este incrementat. Rezultatul este apoi obținut în timpul compilării, deoarece funcția operează pe expresii constante, arătând eficiența și beneficiile de performanță ale evaluării în timpul compilării. Mai întâi, verificați următorul cod. Apoi, treceți la explicația detaliată:

#include
#include
folosind namespace std ;
constexpr dimensiune_t countMinuscule ( string_view s ) {
dimensiune_t numara = 0 ;
pentru ( char c : s ) {
dacă ( este mai jos ( c ) ) {
numara ++;
}
}
întoarcere numara ;
}
int principal ( ) {
cout << „Total litere mici în „ Litere mici ' sunt = '
<< countMinuscule ( 'Litere mici' ) << endl ;
}

Iată o defalcare detaliată a codului cu o explicație pentru fiecare rând:

#include este inclus pentru a utiliza biblioteca standard de flux de intrare/ieșire pentru a tipări mesajele. #include include clasa „string_view” pentru o manipulare eficientă a șirurilor.

În funcția countLowercase(), funcția „constexpr size_t countlower(string_view s)”, numără literele mici într-o vizualizare de șir dată. int main() este punctul de intrare al programului care tipărește un mesaj care indică numărul de litere mici în „Lower Case LeTtErS” și apelează funcția countLowercase() cu „Lower Case LiTtErS” ca intrare și tipărește rezultatul. Consultați următoarea ieșire a programului:

Exemplul 3: Demonstrarea matricei prin utilizarea C++ Constexpr

O demonstrație de matrice arată cum sunt create, accesate și manipulate matricele care sunt colecții structurate de elemente de același tip de date într-un limbaj de programare. În cele ce urmează, vom explica printr-un exemplu de codare în care programul oferă un exemplu simplu de inițializare și manipulare a matricei în timp de compilare.

O demonstrație de matrice ilustrează conceptul de matrice - o colecție structurată de elemente care împărtășesc același tip de date - și modul în care pot fi create, accesate și manipulate folosind un limbaj de programare. În următorul exemplu de codare, vom demonstra cum să inițializam o matrice în timpul compilării, să calculăm dimensiunea acesteia și să tipărim elementele matricei date. Vedeți următorul cod dat și continuați cu explicația:

#include
folosind namespace std ;
int principal ( ) {
constexpr int arrayint [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr int size_array = dimensiunea arrayint / dimensiunea ( int ) ;
cout << 'Lungimea matricei este = ' << size_array << endl ;
cout << 'Elementele din matrice sunt = ' ;
pentru ( int i = 0 ; i < size_array ; ++ i ) {
cout << arrayint [ i ] << ' ' ;
}
}

Acest program inițializează o matrice constexpr, calculează lungimea acesteia la momentul compilării și apoi tipărește lungimea și elementele matricei pe consolă. Constexpr asigură că matricea și proprietățile sale sunt determinate în timpul compilării. Să spargem codul și să explicăm detaliile specifice unul câte unul:

Pentru a include biblioteca standard de flux de intrare-ieșire, permițând utilizarea de funcții precum „cout” pentru ieșire, este apelat #include . Programul începe execuția din funcția int main(). În cadrul funcției main() este definită matricea „arrayint[]”, având o dimensiune de 9 cu o instrucțiune constexpr int arrayint[9]. Matricea este inițializată cu cinci numere, iar elementele rămase au rămas implicit 0. Int length_a = sizeof arrayint / sizeof(int); calculează dimensiunea „arrayint” în octeți.

O buclă „for” iterează prin elementele matricei „arrayint[]”, iar valorile sunt apoi imprimate pe consolă. Să vedem următoarea ieșire a codului dat:

Concluzie

Introducerea și evoluția cuvântului cheie constexpr în C++ au revoluționat modul în care sunt gestionate expresiile și valorile constante. Acest articol a explorat trei exemple practice, arătând puterea constexpr în calcularea factorilor, numărarea literelor mici și inițializarea matricelor în timpul compilării. Principalele concluzii includ performanță îmbunătățită, calcule de rulare reduse și eficiență îmbunătățită a memoriei. Constexpr este un atu valoros pentru crearea de entități fiabile și constante într-o bază de cod, asigurând imuabilitate și contribuind la programe mai raționalizate și mai eficiente.