반응형
람다표현식 지역 변수 캡처
capture local variable
점수 배열에서 70점 이상 filter 한다고 생각해보자.
#include <algorithm>
void foo(int n)
{
if (n >= 70)
{
printf("%d ", n);
}
}
int main()
{
int score[] = { 90, 30, 60, 70, 20, 10 };
std::for_each(score, score + 6, foo);
}
람다 표현식으로 간결하게 표현할 수 있다.
#include <algorithm>
int main()
{
int score[] = { 90, 30, 60, 70, 20, 10 };
std::for_each(score, score + 6,
[](int n) { if (n >= 70) printf("%d ", n); });
}
📌 [C++] 람다 표현식 lambda expression
[C++] 람다 표현식 lambda expression
람다 표현식 lambda expression• C++11 도입 • 익명의 함수(객체) 생성 • 함수 주소가 필요한 위치에 함수 구현 자체 표기 • auto 변수에 함수처럼 사용 • 특정 상황에서 일반 함수
zoosso.tistory.com
Q) 기준 점수를 인자로 전달하고 싶다면?
ex) 60점 이상, 50점 이상
A) 전역 변수 grade 두어서 조건 확인할 수 있다.
#include <algorithm>
int grade; // 전역 변수
void foo(int n)
{
if (n >= grade)
{
printf("%d ", n);
}
}
int main()
{
int score[] = { 90, 30, 60, 70, 20, 10 };
grade = 60;
std::for_each(score, score + 6, foo);
}
A) 람다 표현식은 자신이 속한 영역의 지역변수에 접근할 수 있다.
→ "지역 변수 캡처 했다 (capture local variable)"고 표현
#include <algorithm>
int main()
{
int score[] = { 90, 30, 60, 70, 20, 10 };
int grade = 60;
std::for_each(score, score + 6,
[grade](int n) { if (n >= grade) printf("%d ", n); });
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] [STL] Vector 사용 방법 (1) | 2025.01.20 |
---|---|
[C++] 레퍼런스 Reference (2) | 2025.01.19 |
[C++] 후위 반환 타입 (suffix return type) (1) | 2025.01.15 |
[C++] 함수 삭제 function delete (0) | 2025.01.14 |
[C++] STL capacity와 size 함수 차이 (1) | 2025.01.13 |
댓글