상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C++에서 lambda 표현식의 사용법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 람다 <a href='https://sangseek.com/sangseeks/표현식/ko'>표현식</a>(lambda expression)은 C++11에서 도입된 기능으로, 간단한 함수 객체를 정의하는 데 사용됩니다. 람다 표현식은 주로 코드의 가독성을 높이고, 일회성 함수나 콜백을 정의할 때 유용합니다. 이 글에서는 C++에서 람다 표현식을 사용하는 방법과 그 특징에 대해 자세히 설명하겠습니다. 람다 표현식의 기본 문법 람다 표현식의 기본 문법은 다음과 같습니다: ```cpp [capture](parameters) -> return_type { // 함수 본체 } ``` - capture : 외부 변수를 캡처하는 방법을 정의합니다. 이 부분은 생략할 수 있습니다. - parameters : 람다 함수가 받을 매개변수를 정의합니다. 이 부분도 생략할 수 있습니다. - return_type : 반환 타입을 명시합니다. C++에서는 반환 타입을 생략할 수 있으며, 컴파일러가 자동으로 추론합니다. - 함수 본체 : 람다 함수의 실제 코드가 들어가는 부분입니다. 캡처 리스트 캡처 리스트는 외부 변수를 람다 함수 내부에서 사용할 수 있도록 하는 방법입니다. 캡처 리스트는 다음과 같은 방식으로 정의할 수 있습니다: 1. 값으로 캡처 : `[x]`와 같이 특정 변수를 값으로 캡처합니다. 2. 참조로 캡처 : `[&x]`와 같이 특정 변수를 참조로 캡처합니다. 3. 모든 변수를 값으로 캡처 : `[=]`를 사용하여 모든 외부 변수를 값으로 캡처합니다. 4. 모든 변수를 참조로 캡처 : `[&]`를 사용하여 모든 외부 변수를 참조로 캡처합니다. 5. 혼합 캡처 : `[x, &y]`와 같이 특정 변수는 값으로, 다른 변수는 참조로 캡처할 수 있습니다. 예제 다음은 람다 표현식을 사용하는 간단한 예제입니다: ```cpp include <iostream> include <vector> include <algorithm> int main() { <a href='https://sangseek.com/sangseeks/std::vector/ko'>std::vector</a><int> numbers = {1, 2, 3, 4, 5}; int threshold = 3; // threshold보다 큰 숫자를 찾는 람다 표현식 auto isGreaterThan<a href='https://sangseek.com/sangseeks/Threshold/ko'>Threshold</a> = [&threshold](int num) { return num > threshold; }; // std::count_if을 사용하여 조건에 맞는 숫자의 개수를 센다 int count = std::count_if(numbers.begin(), numbers.end(), isGreaterThanThreshold); std::cout << "Threshold보다 큰 숫자의 개수: " << count << std::endl; return 0; } ``` 이 예제에서는 `threshold` 변수를 참조로 캡처하여 람다 함수 `isGreaterThanThreshold`에서 사용하고 있습니다. `std::count_if` 함수는 이 람다 함수를 사용하여 `numbers` 벡터에서 `threshold`보다 큰 숫자의 개수를 계산합니다. 반환 타입 C++에서는 람다 표현식의 반환 타입을 명시적으로 지정할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다: ```cpp auto add = [](int a, int b) -> int { return a + b; }; ``` 위의 예제에서 `add` 람다 함수는 두 개의 정수를 받아서 그 합을 반환합니다. 반환 타입을 명시적으로 지정하지 않으면, 컴파일러가 자동으로 반환 타입을 추론합니다. <a href='https://sangseek.com/sangseeks/고급 사용/ko'>고급 사용</a>법 람다 표현식은 다양한 상황에서 유용하게 사용될 수 있습니다. 예를 들어, STL 알고리즘과 함께 사용할 때 매우 강력한 도구가 됩니다. 다음은 `std::sort`와 함께 사용하는 예제입니다: ```cpp include <iostream> include <vector> include <algorithm> int main() { std::vector<int> numbers = {5, 3, 1, 4, 2}; // 람다 표현식을 사용하여 내림차순 정렬 std::sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; }); std::cout << "내림차순 정렬된 숫자: "; for (int num : numbers) { std::cout << num << " "; } std::cout << std::endl; return 0; } ``` 이 예제에서는 람다 표현식을 사용하여 `std::sort` 함수에 <a href='https://sangseek.com/sangseeks/정렬 기준/ko'>정렬 기준</a>을 제공하고 있습니다. 람다 표현식은 코드의 가독성을 높이고, 일회성 로직을 간결하게 표현할 수 있게 해줍니다. 결론 C++에서 람다 표현식은 함수 객체를 간편하게 정의할 수 있는 강력한 도구입니다. 외부 변수를 캡처하고, STL 알고리즘과 함께 사용하여 코드의 가독성을 높이며, 일회성 로직을 간결하게 표현할 수 있습니다. C++11 이후로 람다 표현식은 C++ 프로그래밍에서 필수적인 요소가 되었으며, 다양한 상황에서 유용하게 활용될 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기