본문 바로가기

C++/C++148

C++14 : 람다 캡처 표현식(Lambda capture expressions) C++11 람다 함수는 값 복사 또는 참조로 외부 범위에서 선언된 변수를 캡처한다. 이는 람다의 값 멤버가 이동 전용 타입이 될 수 없음을 의미한다. C++14에서는 캡처된 멤버를 임의의 표현식으로 초기화할 수 있다. 이를 통해 외부 범위에 해당하는 명명된 변수를 갖지 않고도 값 이동에 의한 캡처와 람다의 임의 멤버 선언을 모두 수행할 수 있다. 이것은 이니셜라이저 표현식을 사용하여 수행됩니다. auto lambda = [value = 1] {return value;}; 람다 함수 lambda는 초기화한 값인 1을 반환한다. 선언된 캡처는 자동으로 이니셜라이저 표현식에서 타입을 추론한다. 이것은 표준 std::move 함수를 사용하여 이동으로 캡처하는 데 사용할 수 있다. std::unique_ptr p.. 2022. 4. 28.
C++14 : 제네릭 람다(Generic lambdas) C++11에서 람다 함수 매개변수는 구체적인 타입으로 선언해야 한다. C++14에서는 이 요구 사항을 완화하여 람다 함수 매개 변수를 auto 타입 지정자로 선언할 수 있다. auto lambda = [](auto x, auto y) {return x + y;}; auto 타입 추론과 관련하여 generic 람다는 템플릿 인수 추론 규칙을 따른다. (비슷하지만 모든 면에서 동일하지 않음) 위의 lambda의 변환 함수 동작은 아래 변환 함수 동작과 같다. struct { template auto operator()(T x, U y) const {return x + y;} } lambda{}; C++ 람다 표현식에 대해 자세히 알고 싶으면 아래 사이트를 참고하면 된다. https://www.geeksfor.. 2022. 4. 15.
C++14 : 숫자 구분자(Digit separators) C++14에서 작은따옴표 문자(')는 정수 리터럴과 부동 소수점 리터럴 모두 숫자 리터럴에서 숫자 구분 기호로 임의로 사용할 수 있다. 이것은 코드를 보는 사람들이 큰 숫자를 더 쉽게 알아차릴 수 있다. auto integer_literal = 1'000'000; auto floating_point_literal = 0.000'015'3; auto binary_literal = 0b0100'1100'0110; auto a_dozen_crores = 12'00'00'000; 때때로 숫자의 크기가 커지면 숫자를 읽기 어려워진다. 예를 들어 1000은 금방 눈에 들어오지만 더 많은 0이 추가되면 (예: 10000000) 이제 읽기가 조금 어려워지고 더 많은 0이 추가되면 어떻게 될까? 실생활에서는 쉼표(,)가.. 2022. 4. 15.
C++14 : 바이너리 리터럴(Binary literals) C++14의 숫자 리터럴은 이진 형식으로 지정할 수 있다. 구문은 접두사 0b 또는 0B를 사용한다. 구문은 다른 언어에서도 사용됩니다. Java, C#, Swift, Go, Scala, Ruby, Python, OCaml 및 최소 2007년 이후로 일부 C 컴파일러의 비공식 확장으로 사용되었다. 수학적 평가 또는 다양한 타입의 숫자를 포함하는 프로그램을 작성하는 동안 일반적으로 특정 접두사를 사용하여 각 숫자 타입을 지정하는 것을 좋아한다. 다음은 위에서 설명한 것의 예제 프로그램이다. // C++ program to illustrate the // Hexadecimal and Octal number // using literals #include using namespace std; // Driver.. 2022. 4. 15.
300x250