Примеры строк Constexpr в C++

Primery Strok Constexpr V C



В этой статье будет обсуждаться constexpr, заметное дополнение к языку программирования C++, представленное в C++11 и улучшенное в C++14, и сигнализирующее компилятору, что переменная, функция или конструктор объекта являются компилируемыми. постоянная времени. Это произвело революцию в том, как разработчики создают константы и манипулируют ими. С помощью constexpr разработчики могут определять выражения и значения, которые являются неизменяемыми и оцениваются во время компиляции, а не во время выполнения. Главным преимуществом включения constexpr в код является гарантия постоянства.

Каково использование строки Constexpr в C++?

Использование constexpr может привести к созданию более компактных и оптимизированных исполняемых файлов. Поскольку значения заранее определяются компилятором, полученные двоичные файлы могут быть меньше по размеру, обеспечивая более экономное использование системных ресурсов, что, в свою очередь, может повысить производительность программного обеспечения на различных платформах. Одним из особых преимуществ этой функции является сокращение объема вычислений во время выполнения. Поскольку значения вычисляются в процессе компиляции, когда это возможно, оценка во время выполнения становится менее необходимой. Такое повышение эффективности не только ускоряет выполнение, но и оптимизирует общие операции программы.

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

В этом примере мы будем использовать constexpr, который позволяет выполнять вычисления во время компиляции, а не во время выполнения. В контексте вычисления факториалов для вычисления значений факториала во время компиляции можно использовать обычную математическую операцию constexpr. Давайте изучим и рассмотрим следующий код, а затем посмотрим на объяснение кода:







#include

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

возвращаться н <= 1 ? 1 : ( н * факториал ( н - 1 ) ) ;

}

интервал основной ( ) {

интервал на одной '=' 5 ;

стандартный :: расчет << «Факториал» << на одной << '=' << факториал ( на одной ) << стандартный :: конец ;

}

Данный пример кода демонстрирует использование constexpr для вычисления факториала числа рекурсивным способом. В этом примере компилятор может вычислить выражение факториала во время компиляции, поскольку функция факториала объявлена ​​и определена с помощью спецификатора constexpr. Используя constexpr в программе C++, компилятор вычисляет выражение факториала 5 во время компиляции, устраняя необходимость вычислений во время выполнения.



Теперь давайте посмотрим подробную разбивку кода с конкретными деталями и пояснениями.



Во-первых, мы используем #include для включения заголовочного файла «iostream», который обеспечивает необходимые функции ввода и вывода, такие как «std::cout», для печати на консоль.





После этого мы переходим к функции Factorial() (рекурсивной), которая имеет вид «constexpr int Factorial(int n)». Эта функция factial() определяет рекурсивную функцию, которая вычисляет факториал целого числа «n». Constexpr подразумевает, что оптимизация производительности может быть результатом вычисления функции во время компиляции.

Возврат n <= 1 ? 1 : (n * Factorial(n – 1)) В строке используется условное выражение для рекурсии, которое гласит, что если «n» меньше или равно 1, оно возвращает 1 (базовый случай). В противном случае он выполняет вычисление факториала (n! = n * (n-1)!), которое является общей формулой для вычисления факториала, неоднократно вызывая себя с помощью «n – 1», а затем умножая результат на «n». ». Эти строки действуют как привратник при расчете факториала. Он проверяет, находится ли число на базовом уровне, и в случае положительного результата возвращает 1. В противном случае запускается цепная реакция вызовов функций, каждый из которых работает с меньшими числами, пока не будет достигнут базовый случай. Затем результаты перемножаются в обратном порядке. Ниже приведен вывод кода для справки:



Пример 2. Подсчет строчных букв, демонстрирующий строку Constexpr C++

Здесь мы научимся подсчитывать количество строчных букв с помощью строки countexpr. В этом примере цель состоит в том, чтобы подсчитать количество строчных букв в заданной строке с помощью функции constexpr, чтобы сократить объем вычислений во время выполнения. Функция countLowercase(), объявленная как constexpr, принимает строку «string_view» в качестве параметра и перебирает каждый символ данной строки в качестве входных данных. Для каждой встреченной строчной буквы счетчик увеличивается. Затем результат получается во время компиляции, поскольку функция работает с постоянными выражениями, демонстрируя эффективность и преимущества в производительности оценки во время компиляции. Сначала проверьте следующий код. Затем переходите к подробному объяснению:

#include
#include
использование пространства имен std ;
constexpr size_t счет в нижнем регистре ( string_view с ) {
size_t считать '=' 0 ;
для ( голец с : с ) {
если ( ниже ( с ) ) {
считать ++;
}
}
возвращаться считать ;
}
интервал основной ( ) {
расчет << 'Всего строчных букв в ' Строчные буквы 'есть = '
<< счет в нижнем регистре ( 'Строчные буквы' ) << конец ;
}

Вот подробная разбивка кода с объяснением каждой строки:

#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 интервал массивint [ 9 ] '=' { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr интервал размер_массива '=' размер массивint / размер ( интервал ) ;
расчет << 'Длина массива равна = ' << размер_массива << конец ;
расчет << 'Элементы массива = ' ;
для ( интервал я '=' 0 ; я < размер_массива ; ++ я ) {
расчет << массивint [ я ] << '' ;
}
}

Эта программа инициализирует массив constexpr, вычисляет его длину во время компиляции, а затем выводит длину массива и элементы на консоль. Constexpr гарантирует, что массив и его свойства определяются во время компиляции. Давайте разберем код и объясним конкретные детали одну за другой:

Чтобы включить стандартную библиотеку потоков ввода-вывода, позволяющую использовать для вывода такие функции, как «cout», вызывается #include . Программа начинает выполнение с функции int main(). В функции main() определяется массив «arrayint[]» размером 9 с помощью оператора constexpr int arrayint[9]. Массив инициализируется пятью числами, а остальные элементы неявно остаются равными 0. int length_a = sizeof arrayint / sizeof(int); вычисляет размер «массива» в байтах.

Цикл for перебирает элементы массива arrayint[]», а затем значения выводятся на консоль. Давайте посмотрим следующий вывод данного кода:

Заключение

Появление и развитие ключевого слова constexpr в C++ произвели революцию в способах обработки константных выражений и значений. В этой статье были рассмотрены три практических примера, демонстрирующие возможности constexpr при вычислении факториалов, подсчете строчных букв и инициализации массивов во время компиляции. Ключевые выводы включают повышение производительности, сокращение времени вычислений и повышение эффективности использования памяти. Constexpr — ценный инструмент для создания надежных, постоянных объектов в базе кода, обеспечивающий неизменяемость и способствующий созданию более рациональных и эффективных программ.