[] : 아무것도 캡처하지 않음

 

[&x]: xCapture by reference 

 

[x] : x Capture by value

 

[&] : 모든 외부 변수를 Capture by reference

 

[=] : 모든 외부 변수를 Capture by value

 

[x,y] : x,y Capture by value

 

[&x,y] : x Capture by reference , y Capture by value

 

[&x, &y] : x,y Capture by reference

 

[&, y] : y 를 제외한 모든 값을 Capture by reference

 

[=, &x] : x 를 제외한 모든 값을 Capture by value

 

 

'SW' 카테고리의 다른 글

람다함수란?  (2) 2024.07.10

람다(Lambda)

 

람다함수 = 익명 함수

-  사용하는 이유 : 클래스선언 따로 안해줘도 됨, 코드가 짧아짐, 함수의 인라인화가 가능함

-  람다 함수는 일반적으로 한 줄 또는 몇 줄의 짧은 코드로 구성됩니다.

 

원래 함수 생성 형식 : return type name(parameters) { Body };

람다함수 생성 형식 : name = [captures](parameters) -> return type { body };

   또는std::function<type(parameters)> name = [captures](parameters)->type{Body};

 

simple_sort(arr, 5, [](int a, int b) { return (a < b ? true : false); });

  • [captures] : 이미 정의되어 있는 어떤 변수나 상수 중에서 람다 함수 내부에서 사용 할 것을 적어주는 부분 (생략 불가능)
  • Options
    - [&] : 외부에 정의되어 있는 모든 변수들을 레퍼런스 형태로 람다 함수 내부에 가져 오겠다는 의미
    즉, 모든 외부 변수 참조
    - [=] : 외부에 정의 되어 있는 모든 변수들을 복사한 값으로 람다 함수 내부에 가져 오겠다는 의미
    즉, 모든 외부 변수 복사
    ex) auto captures = []() -> void {cout << "Hello, World!\n"; };
    - "Hello, World!” 실행
  • 호출방법 : captures ();
  • 호출하면 정의와 동시에 1회 실행 후 사라짐 (람다함수는 익명함수이기 때문)

 

결론적으로 람다함수는 함수 선언 부분에서 조금 더 간편하게 업그레이드된 특징이 있으며

어떤 변수를 어떻게 참고할 것인지를 추가한 함수입니다.

'SW' 카테고리의 다른 글

람다함수 사용 옵션  (3) 2024.07.11

+ Recent posts