더북(TheBook)

1.9 | 요 약

 

이 장에서는 STL을 가능하게 하는 기본 아이디어를 소개했다. 여기서 소개한 STL에 관한 내용은 모두 이 책의 이어지는 장에서 사용법을 보여주고 설명할 것이다. STL 적용의 근간이며 이어지는 장에서 폭넓게 사용되기 때문에 반드시 이해해야 하는, 중요한 C++ 기능들을 훑어보기 식으로 소개했다. 이 장에서 다룬 주요 내용은 다음과 같다.

STL에는 다른 객체들의 컨테이너가 되는 클래스 템플릿이 정의되어 있다.

STL에는 반복자가 정의되어 있다. 반복자는 포인터처럼 동작하는 객체를 말한다. 원소들의 연속 범위를 정의하기 위해 반복자 쌍을 사용한다. 시작 반복자는 범위의 첫 번째 원소를 가리키고, 끝 반복자는 범위에서 마지막 하나 더 뒤를 가리킨다.

역방향 시작 반복자는 범위에서 마지막 원소를 가리키고, 역방향 끝 반복자는 첫 번째 원소에서 하나 더 앞을 가리킨다. 역방향 반복자는 일반 반복자와 반대로 동작한다.

iterator 헤더는 컨테이너, 배열, 반복자를 지원하는 다른 객체들을 위한 반복자를 반환하는 전역 함수를 정의한다. 전역 함수 begin(), cbegin(), end(), cend()는 일반 반복자를 반환한다. 전역 함수 rbegin(), crbegin(), rend(), crend()는 역방향 반복자를 반환한다. c로 시작하는 함수는 const 반복자를 반환한다.

스트림 반복자를 사용하면 주어진 타입의 데이터를 전송할 수 있다.

STL에는 반복자로 지정한 원소들의 범위에 적용할 수 있는 알고리즘이 함수 템플릿으로 정의되어 있다.

스마트 포인터는 포인터처럼 동작하는 객체이고 자유 공간에 생성된 객체의 주소를 갖는다. 스마트 포인터가 관리하는 객체는 객체를 가리키는 스마트 포인터가 하나도 없으면 자동으로 삭제된다. 스마트 포인터는 원시 포인터와 같은 증가, 감소 연산을 할 수 없다.

람다 표현식은 익명 함수를 정의한다. 람다 표현식은 STL 알고리즘에 함수를 인수로 전달할 때 자주 사용된다.

functional 헤더에 정의된 std::function<> 템플릿 타입을 사용해서 메서드 서명이 일치하는 호출 가능한 엔터티에 대한 타입을 지정할 수 있다.

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