언어/Basic C++

[Basic C++] #46_람다 표현식과 STL 알고리즘

Hardii2 2022. 7. 7. 00:09

[Basic C++] #46_람다 표현식과 STL 알고리즘

STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다.

"전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다.

 

 


 

 

람다 표현식의 활용

 

본문에 들어가기 앞서 아래 링크를 통해 "람다 표현식"의 활용을 먼저 체크하시기 바랍니다.

 

 

[Basic C++] #45_람다 표현식 활용, 제네릭 람다 표현식, 람다 캡처 표현식, 리턴 타입으로서 람다 표

[Basic C++] #45_람다 표현식 활용, 제네릭 람다 표현식, 람다 캡처 표현식, 리턴 타입으로서 람다 표현식 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목

webddevys.tistory.com

 

count_if(), 람다 표현식
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	vector<int> v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };

	int value = 4;
	// count_if() : Predicate과 합치하는 항목의 개수를 반환합니다.
	int cnt = count_if(cbegin(v), cend(v), [value](int i) { return i > value; });

	cout << "Greater than " << value << " is " << cnt << endl;
}

* 결과 화면

"count_if()" 메서드는 STL이 제공하는 알고리즘으로 세 번째 인자로 주어지는 Predicate에 일치하는 항목의 개수를 반환합니다.

위 코드 예제는 Predicate으로 람다 표현식을 사용하고 있습니다!

 

generate(), 람다 표현식
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	vector<int> v(10);
	int val = 1;
	generate(begin(v), end(v), [&val] {val *= 2; return val; });

	for (const auto &val : v)
		cout << val << " ";
}

 

* 결과 화면

"genearte()" 메서드는 주어진 구간안에 존재하는 항목들을 모두 세 번째 인자로 주어진 함수가 반환하는 값으로 교체합니다.

이 코드 예제는 람다 표현식을 제네릭 알고리즘에서 활용하는 예제입니다!