관리 메뉴

기억을 위한 기록들

STL의 5가지 반복자(iterator) 본문

C & CPP

STL의 5가지 반복자(iterator)

에드윈H 2020. 8. 20. 10:28

반복자는 포인터를 추상화한 클래스 객체.

포인터가 하지 못하는 더 많은 동작을 수행 할 수 있다.

자료 형식이 있어 효율적인 연산이 가능하듯이 반복자도 각 반복자만의 특징을 가지는 5가지의 반복자가 있다.

 

1. 입력 반복자(input iterator) : 전방향 읽기

연산 제공

- *iter(읽기)

- ->(멤버 읽기)

- ++(전방향 이동)

- ==,!=(비교)

- iterator(iter) 

 

 

2. 출력 반복자(output iterator) : 전방향 쓰기

연산 제공

- *iter=x(쓰기)

- ++

- iterator(iter)(복사생성자)

 

3. 순방향 반복자(forward iterator) : 전방향 읽기, 쓰기

연산 제공

- *iter

- ->

- ++

- ==,!=

- =(대입)

- iterator()(기본생성자)

- iterator(iter) 

 

4. 양방향 반복자(bidirectional iterator) : 양방향 읽기, 쓰기(list/set/multiset/map/multimap)

- (순방향 반복자 기능)

- --(역방향이동)

 

5. 임의 접근 반복자(random access iterator) : 랜덤 읽기, 쓰기(vector/deque)

- (양방향 반복자 기능)

- 랜덤연산([],+=,-=,+,-,<,>,<=,>=) 연산 제공

 

 

반복자의 중요한 개념

- 순차열(sequence) : 순서 있는 원소의 집합(begin과 end)

- 구간(range) : 순차열은 하나의 시작과 끝을 나타내는 반복자의 쌍으로 표현되며, 이를 구간(range)라고 한다.

 

 

 

그외 

 

삽입 반복자(insert_iterator)

모든 알고리즘은 기본적으로 덮어쓰기 모드로 동작하나, 삽입 반복자를 사용하면 삽입모드로 동작하게 할수 있다.

(ex: 덮어쓰기 모드 1-2-3 에서 2번째 인자를 덮어쓰기를 하면 1-5-3가 되고,

     삽입 모드는 1-5-2-3이된다.

- inserter()

- back_inserter() ->vector, deque, list만 사용가능

- front_inserter() -> deque, list 만 사용 가능

 

 

입/출력 스트림 반복자

스트림과 연결된 반복자로 알고리즘이 스트림에 읽고 쓸 수 있게 하는 반복자 어댑터

 

 

 

'C & CPP' 카테고리의 다른 글

C와 C++  (0) 2020.12.21
STL의 3가지 컨테이너 어댑터  (0) 2020.08.20
STL에서의 함수객체 2가지  (0) 2020.08.19
STL에서의 알고리즘 7가지  (0) 2020.08.19
STL컨테이너 2가지(시퀀스 컨테이너/연관 컨테이너)  (0) 2020.08.18