반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- react
- 코테연습
- OS
- LeetCode
- Level3
- python
- 파이썬
- 고득점Kit
- typescript
- 웹프로그래밍
- Medium
- web
- 배열
- sql
- 리액트
- 동적계획법
- javascript
- 리트코드
- CS
- 백준
- 프로그래머스
- Level1
- Level2
- 자바스크립트
- 카카오
- VUE
- dp
- Doitvue.js입문
- C++
- 프로그래밍
Archives
- Today
- Total
[c++] lamda function (람다 함수) 본문
반응형
Lambda Expression (c++11,14)
[캡쳐블럭](매개변수리스트) ->리턴타입{함수바디};
[]()->void {};
[]() {};
[] {};
short c = 5, d = 7;
auto inha = [c, d](float a, int b){
return a + b + c + d;
};
cout << inha(1.9f, 2) << endl;
//리턴 타입 지정하지 않으면 가장 큰 자료형으로 리턴된다
캡쳐리스트 변수의 값을 변경하기 위해서는 참조 캡처해야한다.
short c = 5, d = 7;
auto inha = [&c, &d](float a, int b) {
c = -11;
d = 8;
return a + b + c + d;
};
cout << inha(1.9f, 2) << endl;
return 0;
short c = 5, d = 7;
auto inha = [&](float a, int b) { // 전체 변수를 참조 형태로서 캡처
c = -11;
d = 8;
return a + b + c + d;
};
cout << typeid(inha).name() << endl; // class
cout << inha(1.9f, 2) << endl;
전체 변수를 값으로 캡처 하는 경우
short c = 5, d = 7;
auto inha = [=](float a, int b)->int {
return a + b + c + d;
}(1.9f, 2);
cout << typeid(inha).name() << endl; // int
람다함수로 재귀함수 작성하기
- 람다에서 재귀를 구현할 때 auto 타입으로는 추론 불가
- 반드시 대입하려고 하는 함수의 타입이 명시되어야 한다.
#include<functional>
int main(){
function<int(int)> fact = [&fact](int n)->int {
return n <= 1 ? 1 : n * fact(n - 1);
};
return 0;
}
람다 함수 정리
- 익명함수, 함수 객체를 생성
- 함수 포인터와 함수 객체의 장점을 지닌다.
- 캡쳐 기능을 통해 함수 밖의 변수에 접근할 수 있고 & 기호를 통해 람다함수 안에서도 외부 변수의 값을 변경할 수 있다.
- 재귀 호출도 가능하다.
반응형
'객체지향프로그래밍 (C++)' 카테고리의 다른 글
[c++] dynamic memory allocation (동적 메모리 할당) ② (0) | 2020.07.06 |
---|---|
[c++] dynamic memory allocation (동적 메모리 할당) (0) | 2020.07.03 |
[c++] function(함수) (0) | 2020.07.02 |
[c++] reference (참조) (0) | 2020.07.02 |
[c++] enumeration (열거체) (0) | 2020.07.02 |
Comments