더북(TheBook)

2.7.2.2 STL 반복자 멤버 함수 요구사항

STL은 반복자 카테고리에 따라 반복자 타입이 반드시 지원해야 하는 함수 멤버들을 정해놓았다. 이 함수들을 그룹으로 모아 놓으면 이해하기 쉬울 것이다. 첫 번째 그룹은 모든 반복자가 갖춰야 하는 것들이다. 모든 반복자 클래스가 갖고 있어야 하는 함수에는 기본 생성자, 복제 생성자, 할당 연산자가 있다. 경험에서 얘기한다면 이들 함수를 작성해야 한다면 명시적으로 소멸자도 작성하게 되는 게 보통이다. Iterator 타입에 대해 작성한다면 다음과 같은 함수를 작성해야 한다.

Iterator();                                 // 기본 생성자
Iterator(const Iterator& y);                // 복제 생성자
~Iterator();                                // 소멸자
Iterator& operator=(const Iterator& y);     // 할당 연산자

STL에 따르면 랜덤 액세스 반복자 클래스는 상등관계(equality) 연산자와 관계 연산자를 모두 정의해야 한다. 실제로는 utility 표준 라이브러리 헤더에서 제공하는 몇 가지 함수 템플릿을 사용하면 연산자 두 개만 정의하는 것으로 이런 작업을 해치울 수 있다.

bool operator==(const Iterator& y) const;
bool operator<(const Iterator& y)  const;

#include 지시자에 utility 헤더가 선언되어 있고, using 지시자로 std::rel_ops 네임스페이스가 선언되어 있다고 가정했다.

#include <utility>
using namespace std::rel_ops;
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.