1. Iterators
- STL container의 원소들을 traverse할 때 사용한다.
- 포인터와 유사하게 컨테이너의 특정 위치를 가리킨다.
- ++ -- * 등의 연산도 가능하다.
- algorithms들이 container의 element들을 접근하는데 interator를 사용한다.
- 이터레이터는 타입이 존재한다.
- 타입에 따라 선언을 하면 아래와 같은 연산이 가능하다. 포인터와 유사하지만 분명한건 포인터가 아니라 class이다.
- 참고로 container class에서 제공하는 member function begin(), end()는 iterator를 반환한다.
2. Source Code
3. Why are iterators so great?
- iterator를 활용하면 general한 find구현이 가능해진다.
- 아래 Find에는 어떤 컨테이너인지에 대한 정보가 전혀 들어가 있지 않다. 뭐든 상관이 없다는 것이다.
- 심지어는 element들이 담긴 container조차 Find에게 전달하지 않는다. 오직 이터레이터만 받아서 find동작을 수행한다.
*참고로 어떤 컨테이너든지 general 하게 동작하기 위해서는 전통적으로 iterator를 ++하나씩 증가해가면서 탐색하는 알고리즘이 적용되었다. 왜냐하면 컨테이너 종류와 관계없이 전부 돌다보면 특정 value와 일치하는 element를 찾을 수 있기 때문이다.
- find함수는 재사용성이 매우 높다고 할 수 있다.
- 실제로 사용하는 코드를 살펴보자.
- 이번에는 display라는 general한 함수를 살펴보자. 어떠한 data type에도 동작할 수 있다.
'ComputerScience > C++' 카테고리의 다른 글
C++ - vector 중복 원소 제거 (0) | 2022.03.01 |
---|---|
C++ STL Algorithm (0) | 2021.11.24 |
C++ STL associative container (0) | 2021.11.11 |
C++ STL sequence container (0) | 2021.11.11 |
C++ - Template (0) | 2021.11.11 |