Ц++ Цонстекпр стринг примери

C Constekpr String Primeri



Овај чланак ће расправљати о цонстекпр, значајном додатку програмском језику Ц++ који је уведен у Ц++11 и додатно побољшан у Ц++14, и сигнализира компајлеру да је променљива, функција или конструктор објекта компајл- временска константа. Револуционирао је начин на који програмери креирају и манипулишу константама. Кроз цонстекпр, програмери могу да дефинишу изразе и вредности који су непроменљиви и процењени током компилације, а не у току извршавања. Свеобухватна предност укључивања цонстекпр у код је његова гаранција постојаности.

Која је употреба Ц++ Цонстекпр стринга?

Коришћење цонстекпр може довести до компактнијих и оптимизованих извршних датотека. Пошто вредности унапред одређује компајлер, резултујуће бинарне датотеке могу бити мање величине, остварујући економичнију употребу системских ресурса што заузврат може побољшати перформансе софтвера на различитим платформама. Једна посебна значајна предност ове функције је смањење које доноси у рачунањима током извршавања. Како се вредности израчунавају током процеса компилације кад год је то изводљиво, евалуација времена извршавања постаје мање потребна. Ово повећање ефикасности не само да убрзава извршење већ и поједностављује укупне операције програма.

Пример 1: Коришћење Цонстекпр у Ц++ за факторско израчунавање

У овом примеру користићемо цонстекпр који омогућава да се прорачуни изводе у време компајлирања, а не у време извршавања. У контексту израчунавања факторијала, уобичајена математичка операција, која је цонстекпр, може се користити за израчунавање факторских вредности током компилације. Хајде да испитамо и прегледамо следећи код, а затим погледајмо објашњење кода:







#инцлуде <иостреам>

цонстекпр инт факторијел ( инт н ) {

повратак н <= 1 ? 1 : ( н * факторијел ( н - 1 ) ) ;

}

инт главни ( ) {

инт на једном = 5 ;

стд :: цоут << „Факторијал од“ << на једном << ' = ' << факторијел ( на једном ) << стд :: ендл ;

}

Дати пример кода демонстрира употребу цонстекпр за израчунавање факторијала броја на рекурзиван начин. Компајлер је у стању да процени факторски израз у време компајлирања у овом примеру јер је факторијална функција декларисана и дефинисана са спецификацијом цонстекпр. Користећи цонстекпр у Ц++ програму, компајлер процењује факторски израз од 5 у време компајлирања, елиминишући потребу за израчунавањем током извршавања.



Сада, да видимо детаљан преглед кода са конкретним детаљима и објашњењима.



Прво, користимо #инцлуде <иостреам> да инкорпорирамо датотеку заглавља „иостреам“ која пружа основне улазне и излазне функције као што је „стд::цоут“ за штампање на конзоли.





Након тога прелазимо на функцију фацториал() (рекурзивну) која је „цонстекпр инт фацториал(инт н)“. Ова функција фацториал() дефинише рекурзивну функцију која израчунава факторијел 'н' целог броја. Цонстекпр подразумева да оптимизације перформанси могу бити резултат процене функције током компилације.

Повратак н <= 1? 1 : (н * факторијел(н – 1)) линија користи условни израз за рекурзију који каже да ако је „н” мање или једнако 1, враћа 1 (основни случај). Ако није, врши израчунавање факторијала (н! = н * (н-1)!), што је општа формула за израчунавање факторијала, тако што се више пута позива са „н – 1“, а затим множи резултат са „н ”. Ове линије делују као чувар капије за факторијално израчунавање. Проверава да ли је број на основном нивоу и враћа 1 ако јесте. Ако није, покреће ланчану реакцију позива функција, од којих сваки ради на мањим бројевима док се не достигне основни случај. Затим се резултати множе заједно обрнутим редоследом. Следеће је излаз кода за вашу референцу:



Пример 2: Бројање малих слова Демонстрација Ц++ Цонстекпр стринга

Овде ћемо научити како да пребројимо број малих слова помоћу стринга цоунтекпр. У овом примеру, сврха је да се преброји број малих слова у датом низу помоћу функције цонстекпр да би се смањило рачунање времена извршавања. Функција цоунтЛоверцасе(), декларисана као цонстекпр, узима стринг „стринг_виев“ као свој параметар и понавља сваки карактер датог стринга као улаз. За свако мало слово на које наиђемо, број се повећава. Резултат се затим добија у време компајлирања док функција ради на константним изразима, показујући ефикасност евалуације времена компајлирања и предности перформанси. Прво проверите следећи код. Затим пређите на детаљно објашњење:

#инцлуде <иостреам>
#инцлуде <стринг_виев>
користећи простор имена стд ;
цонстекпр сизе_т цоунтЛоверцасе ( стринг_виев с ) {
сизе_т цоунт = 0 ;
за ( цхар ц : с ) {
ако ( ниже ( ц ) ) {
цоунт ++;
}
}
повратак цоунт ;
}
инт главни ( ) {
цоут << „Укупно мала слова у „ Мала слова ' су = '
<< цоунтЛоверцасе ( 'Мала слова' ) << ендл ;
}

Ево детаљног прегледа кода са објашњењем сваке линије:

#инцлуде <иостреам> је укључен да користи стандардну библиотеку улазно/излазног тока за штампање порука. #инцлуде <стринг_виев> укључује класу „стринг_виев“ за ефикасну манипулацију стринговима.

У функцији цоунтЛоверцасе(), функција „цонстекпр сизе_т цоунтловер(стринг_виев с)” броји мала слова у датом приказу стринга. Инт маин() је улазна тачка програма која штампа поруку која означава број малих слова у „Мала слова“ и позива функцију цоунтЛоверцасе() са „Мала слова“ као улаз и штампа резултат. Погледајте следећи излаз програма:

Пример 3: Демонстрација низа коришћењем Ц++ Цонстекпр

Демонстрација низа показује како се низови који су структуриране колекције елемената истог типа података креирају, приступају и манипулишу у оквиру програмског језика. У наставку ћемо објаснити кроз пример кодирања у којем програм пружа једноставан пример иницијализације и манипулације низом у време компајлирања.

Демонстрација низа илуструје концепт низова—структурисану колекцију елемената који деле исти тип података—и како се њима може креирати, приступити и манипулисати помоћу програмског језика. У следећем примеру кодирања, показаћемо како да иницијализујете низ у време компајлирања, израчунате његову величину и одштампате елементе датог низа. Погледајте следећи код и пређите на објашњење:

#инцлуде <иостреам>
користећи простор имена стд ;
инт главни ( ) {
цонстекпр инт арраиинт [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
цонстекпр инт сизе_арраи = величина арраиинт / величина ( инт ) ;
цоут << 'Дужина низа је = ' << сизе_арраи << ендл ;
цоут << 'Елементи у низу су = ' ;
за ( инт и = 0 ; и < сизе_арраи ; ++ и ) {
цоут << арраиинт [ и ] << '' ;
}
}

Овај програм иницијализује цонстекпр низ, израчунава његову дужину у време компајлирања, а затим штампа дужину низа и елементе на конзоли. Цонстекпр обезбеђује да се низ и његова својства одређују у време компајлирања. Хајде да разбијемо код и објаснимо конкретне детаље један по један:

Да бисте укључили стандардну библиотеку улазно-излазног тока, која омогућава коришћење функција попут „цоут“ за излаз, позива се #инцлуде <иостреам>. Програм почиње извршавање од инт маин() функције. Унутар функције маин() дефинисан је низ „арраиинт[]”, који има величину 9 са цонстекпр инт арраиинт[9] наредбом. Низ је иницијализован са пет бројева, а преостали елементи су имплицитно остали 0. Инт ленгтх_а = сизеоф арраиинт / сизеоф(инт); израчунава величину „низа“ у бајтовима.

Петља „фор“ пролази кроз елементе низа „арраиинт[]“, а вредности се затим штампају на конзоли. Хајде да видимо следећи излаз датог кода:

Закључак

Увођење и еволуција кључне речи цонстекпр у Ц++ је револуционисало начин на који се рукује константним изразима и вредностима. Овај чланак је истраживао три практична примера, показујући моћ цонстекпр у рачунању факторијала, бројању малих слова и иницијализацији низова у време компајлирања. Кључни закључци укључују побољшане перформансе, смањене прорачуне времена рада и побољшану ефикасност меморије. Цонстекпр је драгоцено средство за креирање поузданих, константних ентитета унутар базе кода, обезбеђујући непроменљивост и доприносећи ефикаснијим и ефикаснијим програмима.