Range-V3에서 임시 컨테이너를 사용하여 Range 파이프라인 생성
범위의 요소에서 작동하는 타사 기능을 처리할 때 벡터를 반환하면 자연스러운 질문이 생깁니다. 모든 요소에 함수를 적용하고 반환된 모든 요소를 포함하는 단일하고 평면화된 범위를 생성하는 범위 파이프라인을 만드는 방법은 무엇입니까?
이전 버전의 Range-V3에서는 다음과 같은 시도를 했습니다. view::transform 및 view::join을 사용하여 이러한 파이프라인을 생성하는 것은 임시 컨테이너의 뷰를 생성할 수 없기 때문에 실패합니다.
그러나 최근 커밋에서는 view::cache1 연산자를 도입하여 이 문제를 해결했습니다. , 임시 컨테이너에 중간 결과를 저장할 수 있습니다. 이를 통해 견고성을 유지하면서 임시 컨테이너를 활용하는 범위 파이프라인을 생성할 수 있습니다.
이 기능을 설명하기 위해 제공된 예를 고려해 보겠습니다.
<code class="cpp">auto rng = src | view::transform(f) | view::cache1 | view::join;</code>
이 파이프라인에서 view::transform src의 각 요소에 함수 f를 적용하여 임시 벡터를 생성합니다. view::cache1은 이러한 임시 벡터를 캐시하여 view::join과 같은 후속 작업에서 평면화된 요소를 사용할 수 있도록 합니다.
업데이트된 파이프라인은 평면화된 범위 rng가 다음 속성을 갖도록 보장합니다.
이 솔루션은 range-v3 및 임시 컨테이너와 관련된 복잡한 범위 조작을 처리하는 기능.
위 내용은 Range-V3의 임시 컨테이너를 사용하여 요소에 함수를 적용하고 결과를 평면화하는 범위 파이프라인을 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!