lambda

manmarru·2024년 1월 12일

c++

목록 보기
3/24

공식문서

  • 한 줄에 생기고 사라지는 함수
    람다함수 만드는 법

    [캡쳐](매개변수) mutable_옵션 -> 반환타입(생략가능)
    {
    함수 내용
    }
    [캡쳐](매개변수) -> 반환타입(생략가능)
    {
    함수 내용
    }

  • 캡쳐 : 매개변수를 어떻게 참조하는 방식

    & : 매개변수를 레퍼런스 참조함
    = : 매개변수를 복사 참조함
    변수만 써두면 해당 변수는 읽기 모드
    캡쳐절을 그냥 []로 비워두면 외부 변수를 참조하지 않겠다는 뜻

캡쳐절을 복합적으로 사용할 수도 있다.
예시)
[&Tmp, Src] : Tmp 는 레퍼런스 참조, Src는 읽기 전용
[=, &Src] : 모든 외부변수를 복사 참조하지만 Src는 레퍼런스 참조
[=, this] : this를 읽기 전용으로, 나머지는 복사참조

맴버변수 참조해서 쓰고싶으면 맴버변수를 캡쳐하는게 아니라 this를 캡쳐하면 맴버변수를 사용할 수 있다.

  • 길찾기 만들던 코드인데 m_Cells라는 맴버벡터를 사용하기 위해 this를 캡쳐했다.
sort(m_listOpen.begin(), m_listOpen.end(), [this, &_iEnd](_int Tmp, _int Src)->_bool
	{
			
		m_Cells[Tmp]->Get_Center();
	}
);

0개의 댓글