C++14 STL 철저 입문
도서명:C++14 STL 철저 입문
저자/출판사:아이버,호튼/길벗
쪽수:652쪽
출판일:2016-12-22
ISBN:9791160500615
목차
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.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 연습문제