Примери за низове на C++ Constexpr

Primeri Za Nizove Na C Constexpr



Тази статия ще обсъди constexpr, забележително допълнение към езика за програмиране C++, което е въведено в C++11 и подобрено допълнително в C++14, и сигнализира на компилатора, че дадена променлива, функция или конструктор на обект е компилиран времева константа. Той революционизира начина, по който разработчиците създават и манипулират константите. Чрез constexpr разработчиците могат да дефинират изразите и стойностите, които са неизменни и се оценяват по време на компилацията, а не по време на изпълнение. Основната полза от включването на constexpr в кода е неговата гаранция за постоянство.

Каква е употребата на C++ Constexpr String?

Използването на constexpr може да доведе до по-компактни и оптимизирани изпълними файлове. Тъй като стойностите се определят предварително от компилатора, получените двоични файлове могат да бъдат с по-малък размер, реализирайки по-икономично използване на системните ресурси, което от своя страна може да подобри производителността на софтуера на различни платформи. Едно специално значително предимство на тази функция е намаляването, което тя носи на изчисленията по време на изпълнение. Тъй като стойностите се изчисляват по време на процеса на компилиране, когато е възможно, оценката по време на изпълнение става по-малко необходима. Това повишаване на ефективността не само ускорява изпълнението, но и рационализира цялостните програмни операции.

Пример 1: Използване на Constexpr в C++ за факторно изчисление

В този пример ще използваме constexpr, който позволява изчисленията да се извършват по време на компилиране, а не по време на изпълнение. В контекста на изчисляване на факториели, обща математическа операция, която е constexpr, може да се използва за изчисляване на факториели по време на компилация. Нека разгледаме и прегледаме следния код и след това разгледаме обяснението на кода:







#include

constexpr вътр факториел ( вътр н ) {

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

}

вътр основен ( ) {

вътр никой = 5 ;

std :: cout << 'Факториал на' << никой << ' = ' << факториел ( никой ) << std :: endl ;

}

Даденият примерен код демонстрира използването на constexpr за изчисляване на факториела на число по рекурсивен начин. Компилаторът е в състояние да оцени факторния израз по време на компилиране в този пример, тъй като факторната функция е декларирана и дефинирана със спецификатора constexpr. Използвайки constexpr в C++ програма, компилаторът оценява факторния израз на 5 по време на компилиране, елиминирайки необходимостта от изчисление по време на изпълнение.



Сега нека видим подробната разбивка на кода с конкретни подробности и обяснения.



Първо, използваме #include , за да включим заглавния файл „iostream“, който предоставя основни входни и изходни функции като „std::cout“ за отпечатване в конзолата.





След това преминаваме към функцията factorial() (рекурсивна), която е „constexpr int factorial(int n)“. Тази функция factorial() дефинира рекурсивна функция, която изчислява факториела на цяло число „n“. Constexpr предполага, че оптимизациите на производителността могат да бъдат резултат от оценяване на функцията по време на компилация.

Връщането n <= 1? 1 : (n * факторен(n – 1)) ред използва условен израз за рекурсия, който гласи, че ако „n“ е по-малко или равно на 1, той връща 1 (основен случай). Ако не, той прави факторното изчисление (n! = n * (n-1)!), което е общата формула за изчисляване на факториела, като многократно се извиква с „n – 1“ и след това умножава резултата по „n ”. Тези редове действат като вратар за факторно изчисление. Той проверява дали числото е на базово ниво и връща 1, ако е така. Ако не, започва верижна реакция от извиквания на функции, всяко от които работи върху по-малки числа, докато се достигне основният случай. След това резултатите се умножават заедно в обратен ред. Следното е резултатът от кода за справка:



Пример 2: Преброяване на малките букви, демонстриращи C++ Constexpr низа

Тук ще научим как да преброим броя на малките букви с помощта на низ countexpr. В този пример целта е да се преброи броя на малките букви в даден низ, като се използва функцията constexpr, за да се намали изчислението по време на изпълнение. Функцията countLowercase(), декларирана като constexpr, приема низ „string_view“ като свой параметър и преминава през всеки знак от дадения низ като вход. За всяка малка буква, която срещнем, броят се увеличава. След това резултатът се получава по време на компилиране, тъй като функцията работи с постоянни изрази, демонстрирайки ефективността и ползите от производителността на оценката по време на компилация. Първо проверете следния код. След това преминете към подробното обяснение:

#include
#include
използване на пространство от имена std ;
constexpr размер_т брой Малки букви ( string_view s ) {
размер_т броя = 0 ;
за ( въглен ° С : с ) {
ако ( е по-ниско ( ° С ) ) {
броя ++;
}
}
връщане броя ;
}
вътр основен ( ) {
cout << 'Общ брой малки букви в ' Малки букви 'са ='
<< брой Малки букви ( 'Малки букви' ) << endl ;
}

Ето подробна разбивка на кода с обяснение на всеки ред:

#include е включен за използване на стандартната библиотека за входно/изходни потоци за отпечатване на съобщенията. #include включва класа “string_view” за ефективно манипулиране на низове.

Във функцията countLowercase(), функцията “constexpr size_t countlower(string_view s)” брои малките букви в даден изглед на низ. Int main() е входната точка на програмата, която отпечатва съобщение, което показва броя на малките букви в „LoWeR CaSe LETtErS“ и извиква функцията countLowercase() с „LoWeR CaSe LETtErS“ като вход и отпечатва резултата. Обърнете се към следния изход на програмата:

Пример 3: Демонстрация на масив чрез използване на C++ Constexpr

Демонстрация на масив показва как масивите, които са структурирани колекции от елементи от един и същи тип данни, се създават, достъпват и манипулират в рамките на език за програмиране. По-долу ще обясним чрез пример за кодиране, в който програмата предоставя прост пример за инициализация и манипулиране на масив по време на компилация.

Демонстрация на масиви илюстрира концепцията за масиви – структурирана колекция от елементи, които споделят един и същи тип данни – и как те могат да бъдат създадени, достъпни и манипулирани с помощта на език за програмиране. В следващия пример за кодиране ще демонстрираме как да инициализираме масив по време на компилация, да изчислим размера му и да отпечатаме елементите на дадения масив. Вижте следния даден код и продължете към обяснението:

#include
използване на пространство от имена std ;
вътр основен ( ) {
constexpr вътр arrayint [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr вътр размер_масив = размер на arrayint / размер на ( вътр ) ;
cout << 'Дължината на масива е = ' << размер_масив << endl ;
cout << 'Елементите в масива са = ' ;
за ( вътр аз = 0 ; аз < размер_масив ; ++ аз ) {
cout << arrayint [ аз ] << ' ' ;
}
}

Тази програма инициализира масив constexpr, изчислява дължината му по време на компилиране и след това отпечатва дължината и елементите на масива в конзолата. Constexpr гарантира, че масивът и неговите свойства се определят по време на компилиране. Нека разбием кода и обясним конкретните подробности една по една:

За да се включи стандартната библиотека за входно-изходни потоци, позволяваща използването на функции като „cout“ за изход, се извиква #include . Програмата започва изпълнението от функцията int main(). Във функцията main() се дефинира масивът „arrayint[]” с размер 9 с оператор constexpr int arrayint[9]. Масивът се инициализира с пет числа, а останалите елементи имплицитно остават 0. Int length_a = sizeof arrayint / sizeof(int); изчислява размера на 'arrayint' в байтове.

Цикъл „for“ преминава през елементите на масива „arrayint[]“ и след това стойностите се отпечатват на конзолата. Нека видим следния резултат от дадения код:

Заключение

Въвеждането и еволюцията на ключовата дума constexpr в C++ революционизира начина, по който се обработват постоянни изрази и стойности. Тази статия изследва три практически примера, демонстрирайки силата на constexpr при изчисляване на факториели, преброяване на малките букви и инициализиране на масивите по време на компилиране. Ключовите изводи включват подобрена производителност, намалено време на изчисления и подобрена ефективност на паметта. Constexpr е ценен актив за създаване на надеждни, постоянни обекти в кодова база, осигурявайки неизменност и допринасяйки за по-рационализирани и ефективни програми.