동시에 여러 컨테이너 반복
C 11은 범위 기반 루프 및 std::for_each와 같은 컨테이너에 대한 다양한 반복 방법을 제공합니다. 그러나 데이터 조작에서 반복되는 작업은 동일한 크기의 두 개 이상의 컨테이너를 동시에 반복하는 것입니다.
인덱스 간 범위 기반 루프
이 특정 시나리오의 경우 범위 기반 루프를 사용하여 컨테이너의 인덱스를 반복하면 효율적이고 표현력이 풍부합니다. 솔루션:
for (unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
indices 함수는 컨테이너에 대해 지연 평가된 인덱스 범위를 반환합니다. 이 접근 방식은 코드 가독성을 저하시키지 않으면서 수동 for 루프와 동일한 효율성을 달성합니다.
Zip Range
이 패턴이 자주 발생하는 데이터 구조의 경우 "zip 범위"를 사용합니다. "는 코드를 더욱 단순화할 수 있습니다.
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
zip 함수는 다양한 튜플을 생성하며, 각 튜플에는 다음의 해당 요소가 포함됩니다. 입력 컨테이너. C 17 이전에는 약간 더 장황한 구문이 필요했습니다.
for (auto& &items : zip(containerA, containerB)) get<0>(items) = get<1>(items);
위 내용은 C에서 여러 컨테이너를 동시에 효율적으로 반복하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!