C에서 여러 컨테이너에 대해 동시에 반복
C 11은 범위 기반 루프 및 'std를 포함하여 컨테이너 반복을 위한 다양한 메커니즘을 제공합니다. ::for_each' 함수입니다. 그러나 다음과 유사한 작업을 수행하기 위해 동일한 크기의 두 개 이상의 컨테이너를 반복하는 데 권장되는 접근 방식은 무엇인지 궁금합니다.
for (unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }
범위 기반 루프와 함께 인덱스 사용
효율적인 솔루션은 범위 기반 루프를 사용하여 컨테이너의 인덱스를 반복하는 것입니다. 이 접근 방식은 기존 for 루프와 동일한 수준의 효율성을 제공합니다. 아래 코드 조각은 이 방법을 예시합니다.
for (unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
'indices' 함수는 컨테이너에 대해 지연 평가된 인덱스 범위를 반환합니다. 구현은 GitHub에서 가능합니다.
컨테이너 압축
이 패턴이 데이터에서 자주 발생하는 경우 대체 접근 방식은 컨테이너를 압축하여 다양한 튜플을 생성하는 것입니다. 그 요소는 쌍을 이루는 요소에 해당합니다.
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
'zip' 기능은 다음을 기반으로 쉽게 구현할 수 있습니다. '인덱스' 기능.
이 접근 방식은 효율적인 반복을 제공하며 어떤 경우에는 더 간결하고 읽기 쉬운 솔루션입니다.
위 내용은 여러 C 컨테이너를 동시에 효율적으로 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!