추천 검색어

최근 검색어

도서 IT전문서/IT입문서 프로그래밍/오픈소스
표준 템플릿 라이브러리의 교과서 C++14 STL 철저 입문
정 가
36,000원
출 간
2016-12-22
지 은 이
아이버호튼
옮 긴 이
조현태
I S B N
9791160500615
분 량
652쪽
난 이 도
초급
부 록
예제 소스

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을 가장 효율적으로 입문할 수 있는 단계로 구성했다.
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 포인터 사용하기
______1.6.1.1 unique_ptr 객체를 초기화하기
______1.6.1.2 unique_ptr 객체를 비교하고 검사하기
____1.6.2 shared_ptr 객체 사용하기
______1.6.2.1 shared_ptr 객체 초기화하기
______1.6.2.2 shared_ptr 객체를 비교하고 검사하기
____1.6.3 weak_ptr 포인터
__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 컨테이너 사용하기
____2.2.1 원소에 접근하기
____2.2.2 array 컨테이너에서 반복자 사용하기
____2.2.3 array 컨테이너의 비교
__2.3 vector 컨테이너 사용하기
____2.3.1 vector 컨테이너 생성하기
____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 컨테이너
__2.4 deque 컨테이너 사용하기
____2.4.1 deque 컨테이너 생성하기
____2.4.2 원소에 접근하기
____2.4.3 원소를 추가하고 제거하기
____2.4.4 deque 컨테이너의 내용을 대체하기
__2.5 list 컨테이너 사용하기
____2.5.1 list 컨테이너 생성하기
____2.5.2 원소 추가하기
____2.5.3 원소를 제거하기
____2.5.4 원소를 정렬하고 병합하기
____2.5.5 원소에 접근하기
__2.6 forward_list 컨테이너 사용하기
__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 컨테이너 어댑터 생성과 사용하기
____3.2.1 스택 연산
__3.3 queue 컨테이너 어댑터 생성과 사용하기
____3.3.1 큐 연산
____3.3.2 queue 컨테이너의 실제 사용
__3.4 priority_queue 컨테이너 어댑터 사용하기
____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 객체 사용하기
____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 컨테이너 사용하기
____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 컨테이너 사용하기
____5.3.1 포인터를 파생 클래스 객체에 저장하기
______5.3.1.1 컨테이너를 정의하기
______5.3.1.2 예제에 사용할 main() 정의하기
__5.4 unordered_set 컨테이너 사용하기
____5.4.1 원소 추가하기
____5.4.2 원소 가져오기
____5.4.3 원소 삭제하기
____5.4.4 버킷 리스트를 보여주기
__5.5 unordered_multiset 컨테이너 사용하기
__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.3.1 find_end() 알고리즘
______6.3.3.2 search() 알고리즘
______6.3.3.3 search_n() 알고리즘
__6.4 범위를 분리하기
____6.4.1 partition_copy() 알고리즘
____6.4.2 partition_point() 알고리즘
__6.5 이진 탐색 알고리즘
____6.5.1 binary_search() 알고리즘
____6.5.2 lower_bound() 알고리즘
____6.5.3 equal_range() 알고리즘
__6.6 요약
__6.7 연습문제

7장 다양한 알고리즘
__7.1 원소 속성을 테스트하기
__7.2 범위를 비교하기
____7.2.1 범위에서 일치하지 않는 위치를 찾기
____7.2.2 사전 순서로 범위 비교하기
____7.2.3 범위의 순열
__7.3 범위를 복제하기
____7.3.1 n개의 원소들을 복제하기
____7.3.2 조건에 따라 복제하기
____7.3.3 역순으로 복제하기
__7.4 원소 순서를 뒤집어서 복제하기
__7.5 인접한 중복 원소를 제거하고 범위를 복제하기
__7.6 범위에서 인접한 중복을 제거하기
__7.7 범위를 회전하기
__7.8 범위를 이동하기
__7.9 범위에서 원소들을 제거하기
__7.10 범위에서 원소를 설정하고 수정하기
____7.10.1 원소 값을 함수로 생성하기
____7.10.2 범위를 변경하기
____7.10.3 범위의 원소를 치환하기
__7.11 알고리즘을 적용하기
__7.12 요약
__7.13 연습문제

8장 랜덤 숫자 생성하기
__8.1 랜덤 숫자란 무엇인가?
__8.2 확률, 분포, 엔트로피
____8.2.1 확률이란 무엇인가?
____8.2.2 분포란 무엇인가?
____8.2.3 엔트로피는 무엇인가?
__8.3 STL에서 랜덤 숫자를 생성하기
____8.3.1 랜덤 숫자 생성에서 시드
____8.3.2 랜덤 시드 구하기
____8.3.3 시드 순차열
__8.4 분포 클래스
____8.4.1 기본 랜덤 넘버 생성기
____8.4.2 분포 객체를 생성하기
____8.4.3 균등분포
______8.4.3.1 이산균등분포
______8.4.3.2 균등분포 정수 적용하기
______8.4.3.3 연속균등분포
______8.4.3.4 연속균등분포를 사용하기
______8.4.3.5 표준균등분포를 생성하기
____8.4.4 정규분포
______8.4.4.1 정규분포를 사용하기
____8.4.5 로그정규분포
______8.4.5.1 로그정규분포 사용하기
____8.4.6 정규분포와 관련된 다른 분포
____8.4.7 샘플링분포
______8.4.7.1 이산분포
______8.4.7.2 이산분포 사용하기
______8.4.7.3 조각 상수분포
______8.4.7.4 조각 선형분포
____8.4.8 나머지 분포
______8.4.8.1 푸아송분포
______8.4.8.2 기하분포
______8.4.8.3 지수분포
______8.4.8.4 감마분포
______8.4.8.5 베이불분포
______8.4.8.6 이항분포
______8.4.8.7 음이항분포
______8.4.8.8 극치분포
__8.5 랜덤 넘버 엔진과 생성기
____8.5.1 선형 합동 엔진
______8.5.1.1 선형 합동 엔진에 기반한 생성기
____8.5.2 메르센 트위스터 엔진
______8.5.2.1 메르센 트위스터 엔진의 인스턴스인 생성기
____8.5.3 감산 캐리 엔진
______8.5.3.1 감산 캐리 엔진의 인스턴스인 생성기
__8.6 원소 범위를 섞기
__8.7 요약
__8.8 연습문제

9장 스트림 연산
__9.1 스트림 반복자
____9.1.1 입력 스트림 반복자
______9.1.1.1 반복자와 스트림 반복자
______9.1.1.2 입력 스트림 함수 멤버를 사용해 읽기
____9.1.2 출력 스트림 반복자
______9.1.2.1 출력 스트림 반복자의 함수 멤버를 사용한 쓰기
__9.2 삽입 연산자와 추출 연산자를 오버로딩하기
__9.3 스트림 반복자를 파일과 사용하기
____9.3.1 파일 스트림
____9.3.2 파일 스트림 클래스 템플릿
____9.3.3 스트림 반복자를 사용한 파일 입력
____9.3.4 스트림 반복자를 사용해 파일 읽기를 반복하기
____9.3.5 스트림 반복자를 사용한 파일 출력
__9.4 스트림 반복자와 알고리즘
__9.5 스트림 버퍼 반복자
____9.5.1 입력 스트림 버퍼 반복자
____9.5.2 출력 스트림 버퍼 반복자
____9.5.3 스트림 버퍼 반복자와 파일 스트림 사용하기
__9.6 문자열 스트림, 스트림, 스트림 버퍼 반복자
__9.7 요약
__9.8 연습문제

10장 수치, 시간, 복소수 데이터 사용하기
__10.1 수치 계산
__10.2 수치 알고리즘
____10.2.1 범위에 증분값을 저장하기
____10.2.2 범위 합계
____10.2.3 내적
______10.2.3.1 내적 적용하기
______10.2.3.2 내적 연산의 대안을 정의하기
____10.2.4 인접 원소들의 차
____10.2.5 부분 합
____10.2.6 극댓값과 극솟값
__10.3 수치 값을 저장하고 이용하기
____10.3.1 valarray 객체의 기본 연산
____10.3.2 단항 연산자
____10.3.3 valarray 객체에 복합 할당 연산자 사용하기
____10.3.4 valarray 객체에 이항 연산자 적용하기
____10.3.5 valarray 객체의 원소에 접근하기
______10.3.5.1 슬라이스 생성하기
______10.3.5.2 행을 선택하기
______10.3.5.3 열을 선택하기
______10.3.5.4 슬라이스 사용하기
______10.3.5.5 슬라이스를 적용해 방정식을 풀기
______10.3.5.6 가우스 소거법
______10.3.5.7 소거 과정
______10.3.5.8 최적 피벗 찾기
______10.3.5.9 다중 슬라이스
______10.3.5.10 행이나 열을 여러 개 선택하기
______10.3.5.11 gslice 객체 사용하기
______10.3.5.12 원소에서 임의의 서브셋을 선택하기
______10.3.5.13 원소를 조건에 따라 선택하기
__10.4 유리수 계산
__10.5 시간 관련 템플릿
____10.5.1 duration 정의하기
______10.5.1.1 duration의 산술 연산
______10.5.1.2 duration 타입의 변환
______10.5.1.3 duration 비교
______10.5.1.4 duration 리터럴
____10.5.2 클록과 시점
______10.5.2.1 시점 생성하기
______10.5.2.2 시점의 duration
______10.5.2.3 시점으로 산술 연산
______10.5.2.4 시점을 비교하기
______10.5.2.5 클록으로 연산하기
______10.5.2.6 실행 시간 측정하기
__10.6 복소수
____10.6.1 복소수를 표현하는 객체를 생성하기
____10.6.2 복소수 연산
____10.6.3 복소수의 비교와 기타 연산
____10.6.4 복소수를 사용하는 간단한 예제
__10.7 요약
__10.8 연습문제
ㆍ지은이 아이버호튼
지은이 소개
수학자로 졸업했지만, 적게 일해도 많이 벌 수 있다는 전망 때문에 정보 기술에 이끌렸다. 아쉽게도 현실은 많은 일을 해야 했고 보상은 그럭저럭 이지만, 지금까지 컴퓨터로 일하고 있다. 프로그래밍, 시스템 디자인, 컨설턴트, 상당히 복잡한 프로젝트의 관리 같은 다양한 일에 참여했다.오랜 기간 공학 설계와 제조 공정 분야에서 시스템을 설계했었다. 과거에는 다양한 언어로 응용프로그램을 개발했지만, 지금은 과학자나 엔지니어를 대상으로 강의하는 데 많은 시간을 쓰고 있다. 현재까지 C, C++, 자바에 관한 책을 집필했다. 책을 집필하거나 컨설팅을 하지 않을 때는 낚시와 여행을 즐기며 즐겁게 생활하고 있다.

ㆍ옮긴이 조현태
옮긴이 소개
수학자로 졸업했지만, 적게 일해도 많이 벌 수 있다는 전망 때문에 정보 기술에 이끌렸다. 아쉽게도 현실은 많은 일을 해야 했고 보상은 그럭저럭 이지만, 지금까지 컴퓨터로 일하고 있다. 프로그래밍, 시스템 디자인, 컨설턴트, 상당히 복잡한 프로젝트의 관리 같은 다양한 일에 참여했다.오랜 기간 공학 설계와 제조 공정 분야에서 시스템을 설계했었다. 과거에는 다양한 언어로 응용프로그램을 개발했지만, 지금은 과학자나 엔지니어를 대상으로 강의하는 데 많은 시간을 쓰고 있다. 현재까지 C, C++, 자바에 관한 책을 집필했다. 책을 집필하거나 컨설팅을 하지 않을 때는 낚시와 여행을 즐기며 즐겁게 생활하고 있다.

필요한 자료를 선택하세요.

추천도서