C++ Constexpr 문자열 예제

C Constexpr Munjayeol Yeje



이 기사에서는 C++11에 도입되고 C++14에서 더욱 향상된 C++ 프로그래밍 언어에 주목할만한 추가 기능인 constexpr에 대해 논의하고 변수, 함수 또는 개체 생성자가 컴파일된 것임을 컴파일러에 신호를 보냅니다. 시간 상수. 이는 개발자가 상수를 생성하고 조작하는 방식에 혁명을 일으켰습니다. constexpr을 통해 개발자는 런타임이 아닌 컴파일 중에 불변이고 평가되는 표현식과 값을 정의할 수 있습니다. constexpr을 코드에 통합함으로써 얻을 수 있는 가장 큰 이점은 일관성이 보장된다는 것입니다.

C++ Constexpr 문자열의 용도는 무엇입니까?

constexpr을 활용하면 더 작고 최적화된 실행 파일을 만들 수 있습니다. 값은 컴파일러에 의해 미리 결정되므로 결과 바이너리의 크기가 더 작아질 수 있으며 시스템 리소스를 보다 경제적으로 사용하여 다양한 플랫폼에서 소프트웨어 성능을 향상시킬 수 있습니다. 이 기능의 특별하고 중요한 이점 중 하나는 런타임 계산이 줄어드는 것입니다. 가능할 때마다 컴파일 프로세스 중에 값이 계산되므로 런타임 평가의 필요성이 줄어듭니다. 이러한 효율성 향상은 실행을 가속화할 뿐만 아니라 전체 프로그램 운영을 간소화합니다.

예제 1: 계승 계산을 위해 C++에서 Constexpr 사용

이 예에서는 런타임이 아닌 컴파일 타임에 계산이 수행되도록 하는 constexpr을 사용합니다. 계승값 계산과 관련하여 일반적인 수학 연산인 constexpr을 활용하여 컴파일 중에 계승값을 계산할 수 있습니다. 다음 코드를 검토하고 검토한 후 코드에 대한 설명을 살펴보겠습니다.







#include

constexpr 정수 계승 ( 정수 N ) {

반품 N <= 1 ? 1 : ( N * 계승 ( N - 1 ) ) ;

}

정수 기본 ( ) {

정수 하나에 = 5 ;

성병 :: 시합 << '의 팩토리얼' << 하나에 << ' = ' << 계승 ( 하나에 ) << 성병 :: ;

}

주어진 코드 예제는 재귀적인 방식으로 숫자의 계승을 계산하기 위해 constexpr을 사용하는 방법을 보여줍니다. 이 예제에서는 계승 함수가 constexpr 지정자를 사용하여 선언 및 정의되었기 때문에 컴파일러는 컴파일 타임에 계승 식을 평가할 수 있습니다. C++ 프로그램에서 constexpr을 사용하면 컴파일러는 컴파일 타임에 5의 계승 표현식을 평가하므로 런타임 계산이 필요하지 않습니다.



이제 구체적인 세부 사항과 설명이 포함된 코드의 세부 분석을 살펴보겠습니다.



먼저 #include 을 사용하여 콘솔에 인쇄하기 위한 'std::cout'과 같은 필수 입력 및 출력 기능을 제공하는 'iostream' 헤더 파일을 통합합니다.





그런 다음 'constexpr int Factorial(int n)'인 계승() 함수(재귀)로 이동합니다. 이 계승() 함수는 'n' 정수의 계승을 계산하는 재귀 함수를 정의합니다. Constexpr은 컴파일 중에 함수를 평가하면 성능 최적화가 발생할 수 있음을 의미합니다.

반환 n <= 1 ? 1 : (n * 계승(n – 1)) 라인은 'n'이 1보다 작거나 같으면 1(기본 사례)을 반환한다는 재귀 조건식을 사용합니다. 그렇지 않은 경우, 계승 계산의 일반 공식인 계승 계산(n! = n * (n-1)!)을 수행합니다. 이는 자신을 'n – 1'로 반복적으로 호출한 다음 그 결과에 'n'을 곱하는 방식입니다. '. 이 선은 계승 계산의 문지기 역할을 합니다. 숫자가 기본 수준에 있는지 확인하고 그렇다면 1을 반환합니다. 그렇지 않은 경우 기본 사례에 도달할 때까지 각각 더 작은 숫자로 작업하는 함수 호출의 연쇄 반응을 시작합니다. 그런 다음 결과를 역순으로 곱합니다. 다음은 참조용 코드의 출력입니다.



예제 2: C++ Constexpr 문자열을 보여주는 소문자 계산

여기서는 countexpr 문자열을 이용하여 소문자의 개수를 세는 방법을 알아보겠습니다. 이 예제의 목적은 런타임 계산을 줄이기 위해 constexpr 기능을 사용하여 주어진 문자열의 소문자 수를 계산하는 것입니다. constexpr로 선언된 countLowercase() 함수는 'string_view' 문자열을 매개변수로 사용하고 입력으로 주어진 문자열의 각 문자를 반복합니다. 소문자를 만날 때마다 개수가 증가합니다. 그런 다음 함수가 상수 표현식에 대해 작동할 때 컴파일 타임에 결과를 얻습니다. 이는 컴파일 타임 평가의 효율성과 성능상의 이점을 보여줍니다. 먼저 다음 코드를 확인해보세요. 그런 다음 자세한 설명으로 넘어갑니다.

#include
#include
네임스페이스 표준 사용 ;
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”에 소문자 개수를 나타내는 메시지를 인쇄하고 “LoWeR CaSe LeTtErS”를 입력으로 countLowercase() 함수를 호출하여 결과를 인쇄하는 프로그램의 진입점입니다. 다음 프로그램 출력을 참조하세요.

예제 3: C++ Constexpr을 활용한 배열 시연

배열 데모는 동일한 데이터 유형의 요소로 구성된 구조화된 컬렉션인 배열이 프로그래밍 언어 내에서 생성, 액세스 및 조작되는 방법을 보여줍니다. 다음에서는 프로그램이 컴파일 타임 배열 초기화 및 조작에 대한 간단한 예를 제공하는 코딩 예제를 통해 설명하겠습니다.

배열 데모에서는 동일한 데이터 유형을 공유하는 구조화된 요소 모음인 배열의 개념과 프로그래밍 언어를 사용하여 배열을 생성, 액세스 및 조작할 수 있는 방법을 보여줍니다. 다음 코딩 예제에서는 컴파일 타임에 배열을 초기화하고 크기를 계산하며 주어진 배열의 요소를 인쇄하는 방법을 보여줍니다. 다음 주어진 코드를 보고 설명을 진행하십시오.

#include
네임스페이스 표준 사용 ;
정수 기본 ( ) {
constexpr 정수 배열 [ 9 ] = { 5 , 55 , 555 , 5555 , 55555 } ;
constexpr 정수 크기_배열 = 크기 배열 / 크기 ( 정수 ) ;
시합 << '배열의 길이는 = ' << 크기_배열 << ;
시합 << '배열의 요소는 = ' ;
~을 위한 ( 정수 = 0 ; < 크기_배열 ; ++ ) {
시합 << 배열 [ ] << ' ' ;
}
}

이 프로그램은 constexpr 배열을 초기화하고 컴파일 타임에 길이를 계산한 다음 배열의 길이와 요소를 콘솔에 인쇄합니다. Constexpr은 배열과 그 속성이 컴파일 타임에 결정되도록 보장합니다. 코드를 분석하고 구체적인 세부 사항을 하나씩 설명하겠습니다.

표준 입출력 스트림 라이브러리를 포함하여 출력에 'cout'과 같은 기능을 사용할 수 있도록 #include 이 호출됩니다. 프로그램은 int main() 함수에서 실행을 시작합니다. main() 함수 내에서 constexpr int arrayint[9] 문을 사용하여 크기가 9인 'arrayint[]' 배열이 정의됩니다. 배열은 5개의 숫자로 초기화되고 나머지 요소는 암시적으로 0으로 유지됩니다. int length_a = sizeof arrayint / sizeof(int); 'arrayint'의 크기를 바이트 단위로 계산합니다.

'for' 루프는 'arrayint[]' 배열의 요소를 반복하고 값이 콘솔에 인쇄됩니다. 주어진 코드의 다음 출력을 살펴보겠습니다.

결론

C++에서 constexpr 키워드의 도입과 발전은 상수 표현식과 값을 처리하는 방법에 혁명을 가져왔습니다. 이 기사에서는 계승 계산, 소문자 계산, 컴파일 타임에 배열 초기화에서 constexpr의 강력한 기능을 보여주는 세 가지 실제 예제를 살펴보았습니다. 주요 내용에는 성능 향상, 런타임 계산 감소, 메모리 효율성 향상이 포함됩니다. Constexpr은 코드베이스 내에서 안정적이고 지속적인 엔터티를 생성하여 불변성을 보장하고 보다 간소화되고 효율적인 프로그램에 기여하는 귀중한 자산입니다.