C 11의 압축 시퀀스
C 11에 범위 기반 for 루프가 도입되면서 코드가 더욱 간결해지고 가독성이 높아졌습니다. . 그러나 여러 컬렉션을 동시에 반복하는 Python의 zip 기능을 시뮬레이션하는 데 사용할 수 있는지 의문이 듭니다.
Boost Zip 기능
-loop는 동시 루프를 직접 지원하지 않으며 Boost 라이브러리는 zip_iterator를 제공합니다. 이를 통해 사용자는 여러 컨테이너의 요소를 병렬로 반복하는 범위를 정의할 수 있습니다.
Boost Zip_iterator 사용
다음 코드 조각은 Boost 사용 방법을 보여줍니다. zip_iterator:
#include <boost/iterator/zip_iterator.hpp> #include <vector> int main() { std::vector<int> a {1, 2, 3}; std::vector<std::string> b {"one", "two", "three"}; for (auto tup : boost::make_zip_iterator(boost::make_tuple(a.begin(), b.begin()))) { int x; std::string y; boost::tie(x, y) = tup; std::cout << x << " " << y << std::endl; } }
이 코드는 출력:
1 one 2 two 3 three
경고:
모든 입력 컨테이너의 길이가 동일해야 한다는 점에 유의하는 것이 중요합니다. 그렇지 않으면 정의되지 않은 동작이 발생할 수 있습니다.
대안
Boost 외에도 C용 zip 기능을 제공하는 대체 라이브러리가 있습니다. 예를 들어 Ranges 라이브러리는 범위 기반 for 루프와 함께 사용할 수 있는 zip_view를 제공합니다.
#include <ranges> int main() { std::vector<int> a {1, 2, 3}; std::vector<std::string> b {"one", "two", "three"}; for (auto [x, y] : std::ranges::zip_view(a, b)) { std::cout << x << " " << y << std::endl; } }
Boost를 사용할지 아니면 다른 라이브러리를 사용할지는 특정 요구 사항과 프로젝트 설정에 따라 다릅니다.
위 내용은 C 11 이상을 사용하여 Python의 Zip 기능을 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!