Esempi di stringhe Constexpr C++

Esempi Di Stringhe Constexpr C



Questo articolo discuterà di constexpr, una notevole aggiunta al linguaggio di programmazione C++ introdotto in C++11 e ulteriormente migliorato in C++14, e segnala al compilatore che una variabile, una funzione o un costruttore di oggetti è un compilatore. tempo costante. Ha rivoluzionato il modo in cui gli sviluppatori creano e manipolano le costanti. Attraverso constexpr, gli sviluppatori possono definire le espressioni e i valori che sono immutabili e valutati durante la compilazione anziché in fase di runtime. Il vantaggio generale dell’incorporamento di constexpr nel codice è la sua garanzia di costanza.

Qual è l'uso della stringa Constexpr C++?

L'utilizzo di constexpr può portare a file eseguibili più compatti e ottimizzati. Poiché i valori sono determinati in anticipo dal compilatore, i file binari risultanti possono essere di dimensioni inferiori, realizzando un uso più economico delle risorse di sistema che a sua volta può migliorare le prestazioni del software su varie piattaforme. Uno speciale vantaggio significativo di questa funzionalità è la riduzione dei calcoli in fase di esecuzione. Poiché i valori vengono calcolati durante il processo di compilazione, ove possibile, la valutazione in fase di esecuzione diventa meno necessaria. Questo aumento di efficienza non solo accelera l'esecuzione ma semplifica anche le operazioni complessive del programma.

Esempio 1: utilizzo di Constexpr in C++ per il calcolo fattoriale

In questo esempio utilizzeremo constexpr che consente di eseguire i calcoli in fase di compilazione anziché in fase di esecuzione. Nel contesto del calcolo dei fattoriali, è possibile sfruttare un'operazione matematica comune, ovvero constexpr, per calcolare i valori fattoriali durante la compilazione. Esaminiamo e rivediamo il seguente codice e poi guardiamo la spiegazione del codice:







#include

constexpr int fattoriale ( int N ) {

ritorno N <= 1 ? 1 : ( N * fattoriale ( N - 1 ) ) ;

}

int principale ( ) {

int nessuno = 5 ;

standard :: cout << 'fattoriale di' << nessuno << ' = ' << fattoriale ( nessuno ) << standard :: fine ;

}

L'esempio di codice fornito dimostra l'uso di constexpr per calcolare il fattoriale di un numero in modo ricorsivo. In questo esempio il compilatore è in grado di valutare l'espressione fattoriale in fase di compilazione perché la funzione fattoriale è dichiarata e definita con l'identificatore constexpr. Utilizzando constexpr in un programma C++, il compilatore valuta l'espressione fattoriale di 5 in fase di compilazione, eliminando la necessità di calcoli in fase di esecuzione.



Vediamo ora la suddivisione dettagliata del codice con dettagli e spiegazioni specifiche.



Innanzitutto, utilizziamo #include per incorporare il file di intestazione 'iostream' che fornisce funzionalità di input e output essenziali come 'std::cout' per la stampa sulla console.





Successivamente, passiamo alla funzione factorial() (ricorsiva) che è “constexpr int factorial(int n)”. Questa funzione factorial() definisce una funzione ricorsiva che calcola il fattoriale di un intero 'n'. Constexpr implica che le ottimizzazioni delle prestazioni possono derivare dalla valutazione della funzione durante la compilazione.

Il rendimento n <= 1 ? 1 : (n * factorial(n – 1)) utilizza un'espressione condizionale per la ricorsione che afferma che se 'n' è inferiore o uguale a 1, restituisce 1 (caso base). In caso contrario, esegue il calcolo fattoriale (n! = n * (n-1)!), che è la formula generale per calcolare il fattoriale, chiamandosi ripetutamente con “n – 1” e quindi moltiplicando il risultato per “n ”. Queste linee fungono da guardiani per il calcolo fattoriale. Controlla se il numero è al livello base e restituisce 1 in tal caso. In caso contrario, dà il via a una reazione a catena di chiamate di funzione, ciascuna delle quali lavora su numeri più piccoli fino al raggiungimento del caso base. Quindi, i risultati vengono moltiplicati insieme in ordine inverso. Quello che segue è l'output del codice come riferimento:



Esempio 2: conteggio delle lettere minuscole che dimostrano la stringa Constexpr C++

Qui impareremo come contare il numero di lettere minuscole utilizzando una stringa countexpr. In questo esempio, lo scopo è contare il numero di lettere minuscole in una determinata stringa utilizzando la funzionalità constexpr per ridurre il calcolo di runtime. La funzione countLowercase(), dichiarata come constexpr, accetta una stringa 'string_view' come parametro e scorre ogni carattere della stringa data come input. Per ogni lettera minuscola che incontriamo, il conteggio viene incrementato. Il risultato viene quindi ottenuto in fase di compilazione poiché la funzione opera su espressioni costanti, mostrando l'efficienza e i vantaggi in termini di prestazioni della valutazione in fase di compilazione. Innanzitutto, controlla il seguente codice. Quindi, passa alla spiegazione dettagliata:

#include
#include
utilizzando lo spazio dei nomi std ;
constexpr taglia_t countLowercase ( string_view s ) {
taglia_t contare = 0 ;
per ( car C : S ) {
Se ( è più basso ( C ) ) {
contare ++;
}
}
ritorno contare ;
}
int principale ( ) {
cout << 'Totale lettere minuscole in ' Lettere minuscole ' sono = '
<< countLowercase ( 'Lettere minuscole' ) << fine ;
}

Ecco una ripartizione dettagliata del codice con una spiegazione di ciascuna riga:

#include è incluso per utilizzare la libreria del flusso di input/output standard per stampare i messaggi. #include include la classe “string_view” per una manipolazione efficiente delle stringhe.

Nella funzione countLowercase(), la funzione “constexpr size_t countlower(string_view s)”, conta le lettere minuscole in una determinata visualizzazione di stringa. L'int main() è il punto di ingresso del programma che stampa un messaggio che indica il numero di lettere minuscole in 'LoWeR CaSe LeTtErS' e chiama la funzione countLowercase() con 'LoWeR CaSe LeTtErS' come input e stampa il risultato. Fare riferimento al seguente output del programma:

Esempio 3: dimostrazione di array utilizzando C++ Constexpr

Una dimostrazione di array mostra come vengono creati, accessibili e manipolati gli array che sono raccolte strutturate di elementi dello stesso tipo di dati all'interno di un linguaggio di programmazione. Di seguito, spiegheremo attraverso un esempio di codice in cui il programma fornisce un semplice esempio di inizializzazione e manipolazione di array in fase di compilazione.

Una dimostrazione di array illustra il concetto di array, una raccolta strutturata di elementi che condividono lo stesso tipo di dati, e come è possibile crearli, accedervi e manipolarli utilizzando un linguaggio di programmazione. Nel seguente esempio di codice, dimostreremo come inizializzare un array in fase di compilazione, calcolarne le dimensioni e stampare gli elementi dell'array specificato. Vedere il codice indicato di seguito e procedere alla spiegazione:

#include
utilizzando lo spazio dei nomi std ;
int principale ( ) {
constexpr int arrayint [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr int dimensione_array = taglia di arrayint / taglia di ( int ) ;
cout << 'La lunghezza dell'array è = ' << dimensione_array << fine ;
cout << 'Gli elementi nell'array sono = ' ;
per ( int io = 0 ; io < dimensione_array ; ++ io ) {
cout << arrayint [ io ] << ' ' ;
}
}

Questo programma inizializza un array constexpr, ne calcola la lunghezza in fase di compilazione e quindi stampa la lunghezza e gli elementi dell'array sulla console. Constexpr garantisce che la matrice e le relative proprietà siano determinate in fase di compilazione. Rompiamo il codice e spieghiamo i dettagli specifici uno per uno:

Per includere la libreria standard dei flussi di input-output, consentendo l'uso di funzioni come 'cout' per l'output, viene chiamato #include . Il programma inizia l'esecuzione dalla funzione int main(). All'interno della funzione main(), viene definito l'array “arrayint[]”, avente una dimensione pari a 9 con un'istruzione constexpr int arrayint[9]. L'array viene inizializzato con cinque numeri e gli elementi rimanenti rimangono implicitamente 0. L'int length_a = sizeof arrayint / sizeof(int); calcola la dimensione dell'“arrayint” in byte.

Un ciclo 'for' scorre gli elementi dell'array 'arrayint[]' e i valori vengono quindi stampati sulla console. Vediamo il seguente output del codice fornito:

Conclusione

L'introduzione e l'evoluzione della parola chiave constexpr in C++ hanno rivoluzionato il modo in cui vengono gestite le espressioni e i valori costanti. Questo articolo ha esplorato tre esempi pratici, mostrando la potenza di constexpr nel calcolo dei fattoriali, nel conteggio delle lettere minuscole e nell'inizializzazione degli array in fase di compilazione. I principali vantaggi includono prestazioni migliorate, calcoli di runtime ridotti e una migliore efficienza della memoria. Constexpr è una risorsa preziosa per creare entità affidabili e costanti all'interno di una codebase, garantendo l'immutabilità e contribuendo a programmi più snelli ed efficienti.