Iterator library
반복자(iterator) 라이브러리는 5가지(c++17 이전) 혹은 6가지(c++17 이후) 종류의 반복자 뿐만아니라 반복자 특징, 어뎁터, 유틸리티 함수를 제공합니다.
목차 |
[편집] Iterator categories
반복자 : LegacyInputIterator
, LegacyOutputIterator
, LegacyForwardIterator
, LegacyBidirectionalIterator
, LegacyRandomAccessIterator
, LegacyContiguousIterator
각 카테고리는 특정 타입에 의해 정의되는 것이 아니라 각 반복자가 어떻게 동작하느냐로 정의됩니다. 이 정의는 타입별로 필요한 동작을 수행하는 반복자를 사용할 수 있다는 것입니다. -- 예를들어, 포인터는 LegacyRandomAccessIterator
의 모든 요구사항을 지원하기 때문에 LegacyRandomAccessIterator
가 필요한 모든 곳에서 포인터가 사용될 수 있습니다.
OutputInterator
와 LegacyContiguousIterator
를 제외하고 모든 반복자 카테고리는 계층적으로 구분할 수 있으며 최상위 반복자(예를들어 LegacyRandomAccessIterator
)는 하위 반복자(예를들어 LegacyInputIterator
)의 기능을 포함합니다. 만약 반복자가 이 카테고리중 하나에 속하면 LegacyOutputIterator
의 요구사항을 만족해야 합니다. 그리고 이는 mutable 반복자라 부르고 입,출력을 모두 지원합니다. Non-mutable 반복자는 constant 반복자라고 부릅니다.
Iterator category | Defined operations | |||
---|---|---|---|---|
LegacyRandomAccessIterator
|
LegacyBidirectionalIterator
|
LegacyForwardIterator
|
LegacyInputIterator
|
|
| ||||
| ||||
| ||||
Iterators that fall into one of the above categories and also meet the requirements of | ||||
LegacyOutputIterator
|
| |||
Iterators that fall into one of the above categories and also meet the requirements of | ||||
LegacyContiguousIterator
|
|
[편집] Iterator primitives
provides uniform interface to the properties of an iterator (class template) | |
empty class types used to indicate iterator categories (class) | |
the basic iterator (class template) |
[편집] Iterator adaptors
iterator adaptor for reverse-order traversal (class template) | |
(C++11) |
iterator adaptor which dereferences to an rvalue reference (class template) |
(C++11) |
creates a std::move_iterator of type inferred from the argument (function template) |
iterator adaptor for insertion at the end of a container (class template) | |
creates a std::back_insert_iterator of type inferred from the argument (function template) | |
iterator adaptor for insertion at the front of a container (class template) | |
creates a std::front_insert_iterator of type inferred from the argument (function template) | |
iterator adaptor for insertion into a container (class template) | |
creates a std::insert_iterator of type inferred from the argument (function template) |
[편집] Stream iterators
input iterator that reads from std::basic_istream (class template) | |
output iterator that writes to std::basic_ostream (class template) | |
input iterator that reads from std::basic_streambuf (class template) | |
output iterator that writes to std::basic_streambuf (class template) |
[편집] Iterator operations
<iterator> 헤더에 정의됨. | |
advances an iterator by given distance (function) | |
returns the distance between two iterators (function) | |
(C++11) |
increment an iterator (function) |
(C++11) |
decrement an iterator (function) |
[편집] Range access
<iterator> 헤더에 정의됨. | |
(C++11) (C++14) |
returns an iterator to the beginning of a container or array (function) |
(C++11) (C++14) |
returns an iterator to the end of a container or array (function) |
(C++14) |
returns a reverse iterator to a container or array (function) |
(C++14) |
returns a reverse end iterator for a container or array (function) |