C에서 반복자 평면화
벡터<벡터
주요 라이브러리에 기존 평면화 반복자 구현이 없는 경우 아래 기본 구현을 제시합니다.
#include <algorithm> #include <iostream> #include <set> #include <vector> template <typename OuterIterator> class flattening_iterator { public: // ... Iterator definitions and implementation private: void advance_past_empty_inner_containers() { // ... Advance logic } // ... Private members }; template <typename Iterator> flattening_iterator<Iterator> flatten(Iterator it) { // ... Return a flattening iterator for a single range } template <typename Iterator> flattening_iterator<Iterator> flatten(Iterator first, Iterator last) { // ... Return a flattening iterator for a range }
이 구현을 통해 다음을 수행할 수 있습니다. 다음 예에서 설명한 것처럼 중첩된 컨테이너를 평면화된 방식으로 반복합니다.
// Generate some test data std::vector<std::vector<int>> v(3); int i(0); for (auto it(v.begin()); it != v.end(); ++it) { it->push_back(i++); it->push_back(i++); it->push_back(i++); it->push_back(i++); } // Flatten the data and print all the elements for (auto it(flatten(v.begin(), v.end())); it != flatten(v.end()); ++it) { std::cout << *it << ", "; }
이 구현은 철저한 테스트를 거쳤으며, 프로덕션에 투입하기 전에 추가 테스트를 수행하는 것이 좋습니다. 버그가 발견되면 언제든지 작성자에게 연락하여 수정을 요청하세요.
위 내용은 중첩된 컨테이너를 반복하기 위해 C에서 평면화 반복자를 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!