일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- EOF
- 시간복잡도
- vscode
- correlation coefficient
- 매크로
- iOS14
- 장고란
- string 메소드
- k-eta
- c++
- 이분그래프
- 자료구조
- 표준 입출력
- Django의 편의성
- Django란
- 입/출력
- getline
- 구조체와 클래스의 공통점 및 차이점
- 입출력 패턴
- 엑셀
- string 함수
- 연결요소
- 2557
- 프레임워크와 라이브러리의 차이
- double ended queue
- UI한글변경
- Django Nodejs 차이점
- scanf
- 백준
- 알고리즘 공부방법
- Today
- Total
Storage Gonie
(12) C++ 람다(lambda) 함수 사용법 본문
# lambda 함수의 용도
- 이름이 없는 함수를 바로 선언하여 사용할 수 있도록 하는 기능
- 함수를 한정된 곳에서만 사용하는 경우에 사용함
- 다른 함수의 파라미터로 전달될 수 있기도 함
- C++ 11 부터 제공된다.
# lambda 함수의 구조
- int mul(int a, int b){ return a*b;} 원래 이런 형태에서 int mul(int a, int b){ return a*b;} 로 됐는데 조금 변형된 느낌.
@ 선언하자마자 호출하는 형태
- [변수캡쳐] (파라미터 변수 및 타입선언)->리턴타입{return 연산 ;}(넘길인자) 형태로 사용되거나
- [변수캡쳐] (파라미터 변수 및 타입선언){return 연산 ;}(넘길인자) 형태로 사용됨.(함수의 반환값이 void인 경우)
@ 선언만 하는경우
- [변수캡쳐] (파라미터 변수 및 타입선언){return 연산 ;} 형태로 사용됨.(넘길인자 부분이 없어짐)
# [변수캡쳐]
- 변수캡쳐는 현재 함수에서 사용할 외부 변수들을 의미한다.
- [ ] 비워두면 아무 변수도 사용하지 않는다는 뜻이고,
- [변수] 이면 외부의 해당 변수만 사용하겠다는 것을 의미하고, -> 변수를 읽기만 가능하고, 값 변경 불가
- [=] 이면 외부의 모든 지역변수를 사용하겠다는 것을 의미하고, -> 변수를 읽기만 가능하고, 값 변경 불가
- [&] 이면 외부의 모든 지역변수를 참조형으로 사용하겠다는 의미하고, -> 변수의 값 수정 가능
- [=, &변수]처럼 특정 변수만 참조형으로 사용하는 것도 가능하다.
# (파라미터)
- 파라미터로 받을 변수들
# ->리턴타입
- 함수의 반환값의 타입을 지정해주는 것
- 반환값이 void일 경우 화살표와 함께 생략가능
# 예시코드
#include <iostream>
using namespace std;
int main(void)
{
int a = 5;
int b = 2;
// 변수캡쳐를 사용하지 않고, 인자를 직접 받는 예시
int result1 = [](int n, int m)->int{return n + m;}(a, b); // 7
// 변수캡쳐에 지역변수를 사용한 예시
int result2 = [a]()->int{return a;}(); // 5
int result3 = [a, b]()->int{return a + b;}(); // 7
// 변수캡쳐에 =를 사용한 예시
int result4 = [=]()->int{return a + b;}(); // 7
// 변수캡쳐에 &를 사용한 예시
int result5 = [&]()->int{return a + b;}(); // 7
int result6 = [&]()->int{return a = a + b;}(); // 7, a = 7
// 람다함수 내부에 람다함수를 포함시킨 예시
int result7 = [&]()->int{ // 9
return [&]()->int{return a + b;}();
}();
}
'알고리즘 > 문제해결을 위한 C++ 공부' 카테고리의 다른 글
(13) C++ algorithm헤더의 swap함수 (0) | 2019.04.26 |
---|---|
(13) C++ algorithm헤더의 sort함수 (0) | 2019.04.26 |
(11) C++ vector 사용법 (0) | 2019.04.25 |
(10) C++ algorithm헤더의 find 함수 (0) | 2019.04.25 |
(9) C++ algorithm헤더의 count 함수 (0) | 2019.04.25 |