본문 바로가기

Iterator3

[C++] Iterator Traits와 User-Defined Iterators References C++ Standard Library 2nd Contents Iterator Traits User-Defined Iterators Iterator Traits 반복자에는 위와 같이 다양한 카테고리가 있습니다. 이는 각각이 자신만의 특수한 기능이 있다는 것을 나타냅니다. 서로 다른 반복자 카테고리는 서로의 동작을 오버로딩할 수도 있고, 오버로딩될 수 있습니다. 이때, iterator tags와 iterator traits를 사용하여 이러한 오버로딩을 적용할 수 있습니다. 각 반복자 카테고리에서 C++ 표준 라이브러리는 iterator에 대한 "label"처럼 사용되는 iterator tag를 제공합니다. 실제 헤더 파일을 살펴보면 상속이 사용되었다는 것을 볼 수 있습니다. 따라서, fo.. 2022. 12. 11.
[Python] Iterables, Iterators, and Generators References Fluent Python Contents Iterables and Iterators Generators and yield Generator Expressions itertools 모듈 (count, takewhile) Generator Functions in the Standard Library yield from Iterable Reducing Functions iter() Function 데이터 처리에서 반복을 기본입니다. 만약 데이터가 메모리에 다 들어가지 않는다면, 각 항목들을 지연(lazily)시켜 가져와야 합니다. 즉, 한 번에 하나씩 그리고 필요할 때 가져와야 합니다. 이것이 바로 이터레이터가 하는 역할입니다. 이번 포스팅에서는 이터레이터 패턴이 파이썬 언어에 어떻게 구현.. 2022. 3. 25.
[C++] Iterator (이터레이터, 반복자) References Professional C++ Contents Iterator, Iterator Traits Stream Iterator Iterator Adaptor Reverse Iterator Move Iterator 1. Iterator 표준 라이브러리는 컨테이너의 원소에 접근하는 기능을 범용적으로 제공하기 위해 반복자(이터레이러, iterator) 패턴을 사용합니다. 컨테이너마다 원소에 대해 반복문을 수행할 방법이 담긴 특수한 스마트 포인터인 반복자가 정의되어 있습니다. 컨테이너의 종류가 달라도 반복자의 인페이스는 모두 C++ 표준을 따르므로 모두 같습니다. 그래서 구체적인 동작은 달라도 컨테이너 원소에 대해 반복문을 비슷한 방식으로 작성할 수 있도록 인터페이스는 통일되어 있습니다. 반복자는.. 2022. 2. 21.