책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > C++
· ISBN : 9791161753911
· 쪽수 : 456쪽
· 출판일 : 2020-01-31
책 소개
목차
1장. C++의 간단한 소개
__C++의 사용 이유
____비용이 들지 않는 추상화
____이식성
____견고성
____C++의 현재
__이 책의 목표
____독자에게 기대하는 지식
__다른 언어와 C++의 비교
____언어의 성능 경쟁
____성능과 관련 없는 C++ 언어의 기능
____객체 소유와 C++의 가비지 컬렉션
____C++ 참조를 사용한 널 객체 예방
____C++의 단점
__클래스 인터페이스와 예외 처리
____엄격한 클래스 인터페이스
____오류 처리와 자원 관리
__이 책에서 사용한 라이브러리
__요약
2장. 최신 C++ 개념
__auto 키워드를 사용한 자동 타입 추론
____함수 서명에서 auto 사용
____변수에서 auto 사용
__람다 함수
____C++ 람다 함수의 기본 구문
____캡처 블록
____람다와 std::function
____다형성 람다
__포인터에 대한 상수 전파
__이동 의미론 설명
____복사 생성, 교환, 이동
____자원의 획득과 3의 법칙
____이동 의미론 소개
____명명된 변수와 오른쪽 값
____기본 이동 의미론과 영의 법칙
__std::optional로 옵션 값 표현
____옵션 반환값
____옵션 멤버 변수
____정렬과 std::optional의 비교
__동적인 값을 std::any로 표현
____std::any의 성능
__요약
3장. 성능 측정
__점근적 복잡도와 빅 O 표기법
____증가율
____분할 상환 시간 복잡도
__측정 대상
____성능의 속성
____성능 테스트: 모범 사례
__코드의 이해와 핵심 지점
____프로파일러
__요약
4장. 데이터 구조
__컴퓨터 메모리의 속성
__STL 컨테이너
____시퀀스 컨테이너
____연관 컨테이너
____정렬된 집합과 맵
____비정렬 집합과 맵
____컨테이너 어댑터
__평행 배열
__요약
5장. 반복자
__반복자 개념
____반복자 분류
____포인터와 유사한 문법
____생성기로서의 반복자
____반복자 특성
____실용적인 예제: 범위 내의 부동소수점 포인트 값 반복 연산
__요약
6장. STL 알고리즘
__블록 구성을 위한 STL 알고리즘
____STL 알고리즘의 개념
____STL 알고리즘과 직접 만든 for 반복문의 비교
__STL과 범위 라이브러리의 미래
____STL 반복자의 제약 사항
____범위 라이브러리 소개
____액션, 뷰, 알고리즘
__요약
7장. 메모리 관리
__컴퓨터 메모리
____가상 주소 공간
____메모리 페이지
____스레싱
__프로세스 메모리
____스택 메모리
____힙 메모리
__메모리의 객체
____객체의 생성과 해제
____메모리 배치
____패딩
__메모리 소유권
____암시적 자원 관리
____컨테이너
____스마트 포인터
__작은 크기를 사용한 최적화
__사용자 정의 메모리 관리
____아레나 만들기
____사용자 정의 메모리 할당자
__요약
8장. 메타프로그래밍과 컴파일 시 평가
__템플릿 메타프로그래밍 소개
____템플릿 파라미터로 정수 사용
____컴파일러가 템플릿 함수를 처리하는 방법
____컴파일 시에 오류를 트리거하는 static_assert 사용
__타입 특성
____타입 특성 분류
____타입 특성 사용
____decltype을 사용한 변수 타입 가져오기
____std::enable_if_t를 사용해 타입에 따른 조건적 함수 활성화
____std::is_detected로 클래스 멤버 들여다보기
__constexpr 키워드
____런타임 구문의 constexpr 함수
____std::integral_constant를 사용한 컴파일 시 처리 과정의 검증
____if constexpr 구문
__다원화 컨테이너
____정적인 크기의 다원화 컨테이너
____동적 크기의 혼합 컨테이너
__std::variant
____variant에 접근
____variant의 다원화 컨테이너
____variant 컨테이너의 값에 접근
____std::get 전역 함수
__메타프로그래밍 실전 예제
____사례 1: 리플렉션
____전역 함수의 조건적 오버로딩
____사례 2: 안전한 포괄적 형 변환 함수 작성
____사례 3: 컴파일 시의 해시 문자열
__요약
9장. 프록시 객체와 지연 평가
__지연 평가와 프록시 객체의 소개
____지연 평가와 선행 평가의 비교
__프록시 객체
____프록시를 사용한 문자열 합치기 비교
____프록시 구현
____r-value 수정자
____합쳐진 프록시 할당
__거리 비교 시 제곱 계산의 보류
____간단한 2차원 지점 클래스
____수학적 배경
____DistProxy 객체 구현
____더 유용하도록 DistProxy 확장
____DistProxy를 사용한 거리 비교
____DistProxy로 거리 계산
____성능 평가
__연산자 오버로딩과 프록시 객체 생성
____확장 메서드로서의 파이프 연산자
____중위 연산자
____더 읽을거리
__요약
10장. 동시성
__동시성의 기본
__동시 프로그래밍이 어려운 이유
__동시성과 병렬성
____시분할
____공유 메모리
____데이터 경합
____뮤텍스
____교착 상태
____동기 작업과 비동기 작업
__C++ 동시 프로그래밍
____스레드 지원 라이브러리
____C++의 아토믹 지원
____C++ 메모리 모델
__잠금 없는 프로그래밍
____잠금 없는 큐의 예
__성능 가이드
____경합 방지
____대기 동작 방지
____스레드와 CPU 코어의 개수
____스레드 우선순위
____스레드 선호
____거짓 공유
__요약
11장. 병렬 STL
__병렬 처리의 중요성
__병렬 알고리즘
____병렬 std::transform() 구현
____병렬 std::count_if 구현
____병렬 std::copy_if 구현
__병렬 STL
____실행 정책
____병렬 버전으로 알고리즘 수정
____인덱스 기반의 for 반복문 병렬화
__GPU에서 STL 알고리즘 실행
____GPU API와 병렬 작업
____STL 알고리즘과 GPU
__부스트 컴퓨트
____부스트 컴퓨트 기본 개념
____OpenCL
____부스트 컴퓨트 초기화
____부스트 컴퓨트에 간단한 transform-reduce 알고리즘 전달
____부스트 컴퓨트에서 조건자 사용
____부스터 컴퓨트에서 사용자 정의 커널 사용
__요약