일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자료구조
- 강참조
- 약참조
- stl
- enumasByue
- C++최적화
- 언리얼가비지컬렉터
- UELOG
- dataasset
- moreeffectiveC++
- map
- C++
- 람다
- UE_LOG
- 스마트포인터
- 정렬
- 델리게이트
- UE4 커스텀로그
- 알고리즘
- 람다사용정렬
- 애셋로드
- 언리얼엔진구조체
- 데이터애셋
- BFS
- 정렬알고리즘
- UML관련
- 선택정렬
- 크리티컬섹션
- 프로그래머스
- unorder_map
- Today
- Total
기억을 위한 기록들
STL의 5가지 반복자(iterator) 본문
반복자는 포인터를 추상화한 클래스 객체.
포인터가 하지 못하는 더 많은 동작을 수행 할 수 있다.
자료 형식이 있어 효율적인 연산이 가능하듯이 반복자도 각 반복자만의 특징을 가지는 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 |