태그: views
3편
-
C++20 std::views: filter·transform·take 지연 평가와 ranges::to로 구체화하기
C++20 std::views의 filter, transform, take, drop을 파이프로 연결하면 중간 컨테이너 없이 지연 평가되는 원리를 설명합니다. 뷰가 원본을 소유하지 않아 생기는 댕글링, 재평가와 캐싱 문제, ranges::to로 결과를 컨테이너로 만드는 방법을 다룹니다.
-
C++20 ranges의 개념 계층: range 요건, input·forward·random_access_range, CPO 설계
begin()과 end()만 있으면 range가 되는 최소 요건부터 input_range, forward_range, random_access_range로 계층이 나뉜 이유, std::ranges::begin이 평범한 함수가 아닌 커스터마이제이션 포인트 객체로 설계된 까닭을 C++20 코드로 설명합니다.
-
C++20 Ranges: views 파이프라인, projection, 성능 특성
begin/end를 반복해 넘기고 람다로 멤버를 비교하던 STL 코드를 std::ranges 알고리즘과 프로젝션으로 줄이는 방법을 보여줍니다. filter·transform·take로 view 파이프라인을 만들고 벡터로 구체화하는 법, range concept 요구 사항, view 수명 함정도 다룹니다.