더북(TheBook)

1.4.4.2 삽입 반복자

삽입 반복자는 표준 반복자에 기반을 두지만, 동작에는 중요한 차이가 있다. 일반 반복자는 범위 안에 있는 원소에 접근만 하거나 기존 원소를 변경만 할 수 있다. 삽입 반복자는 컨테이너의 어느 위치든 새 원소들을 범위로 추가할 수 있다. 표준 배열이나 array<T, N> 컨테이너는 원소들의 개수가 고정되어 있으므로 삽입 반복자를 적용할 수 없다. 삽입 반복자는 세 가지가 있다.

back_insert_iteratorpush_back() 멤버 함수로 컨테이너의 끝에 새 원소를 추가한다. vector, list, deque 컨테이너가 push_back() 멤버를 지원한다. 컨테이너가 push_back()을 정의하지 않았다면 back_insert_iterator는 사용할 수 없다. 전역 함수 back_inserter()는 인수로 전달된 컨테이너용 back_insert_iterator 객체를 반환한다.

front_insert_iteratorpush_front() 멤버 함수로 컨테이너의 앞에 새 원소를 추가한다. list, forward_deque 컨테이너가 push_front() 멤버를 지원한다. push_front() 멤버가 없는 컨테이너는 front_insert_iterator를 사용할 수 없다. 전역 함수 front_inserter()는 인수로 전달된 컨테이너용 front_inserter_iterator 객체를 반환한다. 즉, front_inserter()에 전달되는 컨테이너는 list, forward_deque 컨테이너여야 한다.

insert_iteratorinsert() 멤버가 있는 컨테이너에 새 원소를 삽입한다. string 헤더에 정의된 문자열 클래스들은 insert() 멤버를 갖고 있으므로 insert_iterator 객체를 사용할 수 있다. 전역 함수 inserter()는 첫 번째 인수로 지정된 컨테이너용 insert_iterator 객체를 반환한다. 두 번째 인수는 컨테이너에 원소를 삽입할 위치를 가리키는 반복자다.

일반적으로 삽입 반복자는 지정된 범위에서 원소들을 복사하는 알고리즘이나 새로운 원소들을 생성하는 알고리즘에 인수로 사용된다. 2장에서 삽입 반복자를 적용한 예를 볼 수 있다.

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