반응형

반복자 패턴은 C++을 하던 사람이라면 익숙한 패턴이다.


std::vector::iterator가 바로 반복자 패턴이다.


반복자 패턴은 같은 개체들을 관리하고, 반복, 순회되는 작업들과 외부로부터 내부 개체의 노출을 막기 위해 사용한다.


C++ 프로그래머들은 이를 vector로 처리하여 사용한다.




위의 예제가 vector를 사용한 것이다.


vector로 관리하는 개체를 iterator를 통하여 반복, 순회되는 작업을 한다.


이미 구현되어 있는 것을 사용하면 아주 편리하다.


허나, 내부적으로 어떤식으로 이루어지는지 파악하면 vector를 사용함에 있어서 어떤식으로 사용되는지 알 수 있을 것이다.


아래의 예제는 위의 예제에서 사용한 함수들만 임의적으로 구현한 iterator이다.




template class로 구현하여, 클래스에 구애받지 않고 iterator를 사용할 수 있다.


Vector 클래스와 같이 실질적으로 데이터를 push 및 pop 하는 클래스 내에 반복자 패턴을 구현하여 사용한다.


namspace Daru 내의 Vector는 namesapce std 내의 vector 사용 방법과 동일하게 사용하면 된다.

반응형

+ Recent posts