본문 바로가기

ComputerScience/C++

C++ STL iterator

728x90

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에도 동작할 수 있다.

728x90
반응형

'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