C++14 STL의 단계별 입문서『C++14 STL 철저 입문』. C++ 표준안은 시대의 흐름에 맞춰 3년 주기로 바뀌고 있다. C++08, C++11, C++14까지 나오면서 표준 템플릿 라이브러리(STL)도 바뀌었다. STL 자체는 방대하지만, 학습에는 단계가 있다. 컨테이너 → 반복자 → 알고리즘 → 고급 주제 순으로 학습하는 게 좋다. 이 순서는 STL의 첫 번째 관문인 컨테이너를 만드는 방법, 컨테이너에서 반복자를 사용하는 방법, 컨테이너와 반복자를 사용해 알고리즘을 적용하는 방법으로 설명한다.
저자 소개
저자 아이버 호튼(Ivor Horton)은 수학자로 졸업했지만, 적게 일해도 많이 벌 수 있다는 전망 때문에 정보 기술에 이끌렸다. 아쉽게도 현실은 많은 일을 해야 했고 보상은 그럭저럭 이지만, 지금까지 컴퓨터로 일하고? 있다. 프로그래밍, 시스템 디자인, 컨설턴트, 상당히 복잡한 프로젝트의 관리 같은 다양한 일에 참여했다. 오랜 기간 공학 설계와 제조 공정 분야에서 시스템을 설계했었다. 과거에는 다양한 언어로 응용프로그램을 개발했지만, 지금은 과학자나 엔지니어를 대상으로 강의하는 데 많은 시간을 쓰고 있다. 현재까지 C, C++, 자바에 관한 책을 집필했다. 책을 집필하거나 컨설팅을 하지 않을 때는 낚시와 여행을 즐기며 즐겁게 생활하고 있다.
목 차
목차
1장 표준 템플릿 라이브러리
__1.1 기본 아이디어
__1.2 템플릿
__1.3 컨테이너
__1.4 반복자
____1.4.1 반복자 얻기
____1.4.2 반복자 카테고리
____1.4.3 스트림 반복자
____1.4.4 반복자 어댑터
______1.4.4.1 역방향 반복자
______1.4.4.2 삽입 반복자
______1.4.4.3 이동 반복자
__1.5 반복자에 쓰이는 연산
__1.6 스마트 포인터
____1.6.1 unique_ptr〈T〉 포인터 사용하기
______1.6.1.1 unique_ptr〈T〉 객체를 초기화하기
______1.6.1.2 unique_ptr〈T〉 객체를 비교하고 검사하기
____1.6.2 shared_ptr〈T〉 객체 사용하기
______1.6.2.1 shared_ptr〈T〉 객체 초기화하기
______1.6.2.2 shared_ptr〈T〉 객체를 비교하고 검사하기
____1.6.3 weak_ptr〈T〉 포인터
__1.7 알고리즘
__1.8 함수를 인수로 전달하기
____1.8.1 함수 객체
____1.8.2 람다 표현식
______1.8.2.1 람다 표현식에 이름 지정하기
______1.8.2.2 람다 표현식을 함수에 전달하기
______1.8.2.3 캡처 절
__1.9 요약
__1.10 연습문제
2장 순차 컨테이너
__2.1 순차 컨테이너
____2.1.1 컨테이너의 공통 함수 멤버
__2.2 array〈T,N〉 컨테이너 사용하기
____2.2.1 원소에 접근하기
____2.2.2 array 컨테이너에서 반복자 사용하기
____2.2.3 array 컨테이너의 비교
__2.3 vector〈T〉 컨테이너 사용하기
____2.3.1 vector〈T〉 컨테이너 생성하기
____2.3.2 벡터의 용량과 크기
____2.3.3 원소에 접근하기
____2.3.4 vector 컨테이너에서 반복자 사용하기
____2.3.5 벡터 컨테이너에 새 원소 추가하기
______2.3.5.1 원소를 추가하기
______2.3.5.2 원소를 삽입하기
____2.3.6 원소를 삭제하기
____2.3.7 vector〈bool〉 컨테이너
__2.4 deque〈T〉 컨테이너 사용하기
____2.4.1 deque 컨테이너 생성하기
____2.4.2 원소에 접근하기
____2.4.3 원소를 추가하고 제거하기
____2.4.4 deque 컨테이너의 내용을 대체하기
__2.5 list〈T〉 컨테이너 사용하기
____2.5.1 list 컨테이너 생성하기
____2.5.2 원소 추가하기
____2.5.3 원소를 제거하기
____2.5.4 원소를 정렬하고 병합하기
____2.5.5 원소에 접근하기
__2.6 forward_list〈T〉 컨테이너 사용하기
__2.7 반복자를 직접 정의하기
____2.7.1 STL 반복자 요구사항
______2.7.1.1 STL 반복자 사용의 문제
______2.7.2 STL 접근 방식
______2.7.2.1 반복자 템플릿 사용하기
______2.7.2.2 STL 반복자 멤버 함수 요구사항
__2.8 요약
__2.9 연습문제
3장 컨테이너 어댑터
__3.1 컨테이너 어댑터는 무엇인가?
__3.2 stack〈T〉 컨테이너 어댑터 생성과 사용하기
____3.2.1 스택 연산
__3.3 queue〈T〉 컨테이너 어댑터 생성과 사용하기
____3.3.1 큐 연산
____3.3.2 queue 컨테이너의 실제 사용
__3.4 priority_queue〈T〉 컨테이너 어댑터 사용하기
____3.4.1 우선순위 큐를 생성하기
____3.4.2 우선순위 큐를 위한 연산
__3.5 힙
____3.5.1 힙 생성하기
____3.5.2 힙 연산
__3.6 포인터를 컨테이너에 저장하기
____3.6.1 순차열 컨테이너에 포인터 저장하기
____3.6.2 우선순위 큐에 포인터 저장하기
____3.6.3 포인터 힙
____3.6.4 기반 클래스 포인터를 담은 컨테이너
____3.6.5 알고리즘을 포인터 범위에 적용하기
__3.7 요약
__3.8 연습문제
4장 map 컨테이너
__4.1 맵 컨테이너 소
__4.2 map 컨테이너 사용하기
____4.2.1 map 컨테이너 생성하기
____4.2.2 맵에 원소 삽입하기
____4.2.3 map 원소를 내부에서 생성하기
____4.2.4 map의 원소들에 접근하기
____4.2.5 원소 삭제하기
__4.3 pair〈〉와 tuple〈〉 객체 사용하기
____4.3.1 pair 연산
____4.3.2 tuple 연산
____4.3.3 tuple과 pair를 함께 사용
__4.4 multimap 컨테이너 사용하기
__4.5 비교 함수를 바꾸기
____4.5.1 greater〈T〉 객체 사용하기
____4.5.2 원소를 비교하는 함수 객체 정의하기
__4.6 해싱
____4.6.1 해시 값을 생성하는 함수
__4.7 unordered_map 컨테이너 사용하기
____4.7.1 unordered_map 컨테이너 생성과 관리하기
____4.7.2 버킷 개수 조정하기
____4.7.3 원소 삽입하기
____4.7.4 원소에 접근하기
____4.7.5 원소 제거하기
____4.7.6 버킷에 접근하기
__4.8 unordered_multimap 컨테이너 사용하기
__4.9 요약
__4.10 연습문제
5장 set으로 작업하기
__5.1 set 컨테이너 이해하기
__5.2 set〈T〉 컨테이너 사용하기
____5.2.1 원소 추가와 제거
____5.2.2 원소에 접근하기
____5.2.3 set으로 작업하기
______5.2.3.1 학생 생성하기
______5.2.3.2 과목을 수강하는 학생들을 set으로 생성하기
______5.2.3.3 과목과 코스를 생성하기
______5.2.3.4 코스에 학생을 등록하기
______5.2.3.5 학생들의 수강 과목 검사하기
______5.2.3.6 코스를 출력하기
______5.2.3.7 전체 프로그램
____5.2.4 set 반복자
____5.2.5 set 컨테이너에 포인터 저장하기
______5.2.5.1 set 컨테이너에 스마트 포인터를 저장하는 예제
______5.2.5.2 shared_ptr 원소들의 벡터를 생성하기
______5.2.5.3 weak_ptr가 참조하는 객체를 출력하기
______5.2.5.4 map 컨테이너에서 스마트 포인터를 키로 사용하기
______5.2.5.5 스마트 포인터를 비교할 때의 문제점
__5.3 multiset〈T〉 컨테이너 사용하기
____5.3.1 포인터를 파생 클래스 객체에 저장하기
______5.3.1.1 컨테이너를 정의하기
______5.3.1.2 예제에 사용할 main() 정의하기
__5.4 unordered_set〈T〉 컨테이너 사용하기
____5.4.1 원소 추가하기
____5.4.2 원소 가져오기
____5.4.3 원소 삭제하기
____5.4.4 버킷 리스트를 보여주기
__5.5 unordered_multiset〈T〉 컨테이너 사용하기
__5.6 set 연산
____5.6.1 set_union() 알고리즘
____5.6.2 set_intersection() 알고리즘
____5.6.3 set_difference() 알고리즘
____5.6.4 set_symmetric_difference() 알고리즘
____5.6.5 includes() 알고리즘
____5.6.6 집합 연산 실습
__5.7 요약
__5.8 연습문제
6장 정렬, 병합, 검색, 분리
__6.1 범위를 정렬하기
____6.1.1 같은 원소의 정렬과 순서
____6.1.2 부분 정렬
____6.1.3 정렬된 범위의 테스트
__6.2 범위를 병합하기
__6.3 범위를 검색하기
____6.3.1 범위에서 원소 찾기
____6.3.2 범위에서 원소 범위 중에 하나를 찾기
____6.3.3 범위에서 여러 원소를 찾기
______6.3.
출판사 서평
출판사 서평
25년 이상 C++ 책을 쓴 아이버 호튼이 설명하는
C++14 표준 템플릿 라이브러리(STL)
템플릿, 컨테이너, 반복자, 알고리즘을 그림으로 학습하고,
고급 기능인 랜덤, 분포, 스트림, 수치, 시간, 복소수까지 마스터한다
[출판사 리뷰]
처음 배울 때 최신 버전이어야 한다
C++14로 시작하는 STL 입문
C++ 표준안은 시대의 흐름에 맞춰 3년 주기로 바뀌고 있다. C++08, C++11, C++14까지 나오면서 표준 템플릿 라이브러리(STL)도 바뀌었다. 옛 문법으로 STL을 학습하면 새 버전에서 바뀐 ...
25년 이상 C++ 책을 쓴 아이버 호튼이 설명하는
C++14 표준 템플릿 라이브러리(STL)
템플릿, 컨테이너, 반복자, 알고리즘을 그림으로 학습하고,
고급 기능인 랜덤, 분포, 스트림, 수치, 시간, 복소수까지 마스터한다
[출판사 리뷰]
처음 배울 때 최신 버전이어야 한다
C++14로 시작하는 STL 입문
C++ 표준안은 시대의 흐름에 맞춰 3년 주기로 바뀌고 있다. C++08, C++11, C++14까지 나오면서 표준 템플릿 라이브러리(STL)도 바뀌었다. 옛 문법으로 STL을 학습하면 새 버전에서 바뀐 것을 다시 배워야 한다. STL을 입문할 때 C++14로 시작해야 한다.
C++14 STL의 단계별 입문서
STL 자체는 방대하지만, 학습에는 단계가 있다. 컨테이너 → 반복자 → 알고리즘 → 고급 주제 순으로 학습하는 게 좋다. 이 순서는 STL의 첫 번째 관문인 컨테이너를 만드는 방법, 컨테이너에서 반복자를 사용하는 방법, 컨테이너와 반복자를 사용해 알고리즘을 적용하는 방법으로 설명한다. STL을 가장 효율적으로 입문할 수 있는 단계로 구성했다.
[이 책의 내용]
ㆍC++ 응용 프로그램에서 표준 템플릿 라이브러리를 사용하는 방법
ㆍ다양한 컨테이너 유형과 용도에 따른 컨테이너 선택법
ㆍ컨테이너와 사용할 수 있는 클래스 타입 작성법
ㆍ반복자의 종류와 특징
ㆍ반복자 타입을 정의하는 방법
ㆍ알고리즘을 템플릿으로 정의하고 컨테이너와 배열에 적용하기
ㆍ하드웨어 클록과 시간 관련 기능 사용하기
ㆍ수치 데이터 처리를 위한 템플릿 사용법
ㆍ분포 객체와 유사 난수 생성기를 생성하고 사용하는 법