더북(TheBook)

2.7.1 STL 반복자 요구사항

STL에서 클래스 타입에 반복자를 정의하려면 특정 요구사항을 만족해야 한다. 그래야 반복자를 사용하는 알고리즘이 예상대로 동작하는 것을 보장할 수 있다. 알고리즘은 데이터를 담고 있는 컨테이너가 어떤 종류인지 알지도 못하고 관심도 없다. 알고리즘은 처리할 데이터를 확인할 수 있는 반복자의 특성에만 관심이 있다. 알고리즘이 바뀌면 반복자에 필요한 기능도 바뀐다. 반복자 카테고리에 대해서는 1장에서 이미 살펴봤다. 반복자 카테고리에는 입력 반복자, 출력 반복자, 순방향 반복자, 양방향 반복자, 랜덤 액세스 반복자가 있다. 하위 기능 반복자가 필요한 곳에는 상위 기능 반복자를 사용할 수 있다.

알고리즘을 정의하는 템플릿은 필요한 반복자 카테고리를 결정해야 알고리즘에 전달된 반복자가 알고리즘에 필요한 반복자 기능을 충족하는지 검증할 수 있다. 알고리즘에 인수로 전달된 반복자 카테고리를 아는 것은 동작을 더 효율적으로 할 수 있는 최소 요구사항을 아는 것뿐 아니라 알고리즘이 반복자의 기능을 최대한 이용할 가능성도 제공하는 것이다. 이를 실현하기 위해 반복자 기능을 표준화된 방법으로 식별할 수 있어야 한다. 다양한 반복자 카테고리는 반복자 클래스가 정의해야 하는 다양한 함수 멤버가 있다. 지금까지 학습하면서 반복자 카테고리가 기능을 누적하는 것을 봤을 텐데, 각 카테고리에 따라 필요한 함수 멤버들도 마찬가지로 이를 반영한다. 바로 진행하기 전에 함수 템플릿이 반복자를 어떻게 사용하는지부터 살펴보자.

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