장바구니 담기 close

장바구니에 상품을 담았습니다.

모던 C++ 프로그래밍 쿡북

모던 C++ 프로그래밍 쿡북 100가지 레시피로 배우는 C++ 동작의 이해와 문제 해결

  • 마리우스반실라
  • |
  • 에이콘출판
  • |
  • 2019-07-31 출간
  • |
  • 716페이지
  • |
  • 188 X 235 X 34 mm
  • |
  • ISBN 9791161753348
판매가

40,000원

즉시할인가

36,000

카드할인

0원(즉시할인 0%)

적립금

2,000원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
36,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책에서 다루는 내용 ★
■ 스레딩과 동시성의 표준 지원을 이해하고 기본 태스크를 수행하는 방법 학습하기
■ C++17 파일시스템 라이브러리 깊이 파헤치기
■ 다양한 타입의 문자열로 작업하고 편집의 다양한 측면 살펴보기
■ 현대 기능에 중점을 둔 함수, 람다 표현식, 호출 가능한 객체 탐색하기
■ 표준 라이브러리를 활용하고 컨테이너, 알고리즘, 반복자 I/O, 시간, 유틸리티로 작업하기
■ 정규 표현식을 사용해 텍스트를 검색하고 대체 문제 해결하기
■ 개발자가 접하는 공통적인 문제를 해결하기 위해 string_view, any, optional, variant 타입을 포함한 표준 라이브러리에 새롭게 추가된 유틸리티 사용하기
■ 널리 사용되는 C++용 테스트 프레임워크를 알아보고 여러 가지 유용한 패턴과 관용어 구현하기

★ 이 책의 대상 독자 ★
이 책은 경험과 지식 수준에 상관없이 볼 수 있는 책으로, 모든 C++ 개발자를 대상으로 한다. 언어를 마스터하고 왕성한 현대 C++ 개발자가 되길 원하는 초급 또는 중급 수준의 C++ 개발자에게 이상적이다. 숙련된 C++ 개발자에게는 C++11, C++14, C++17 언어 및 라이브러리 기능에 관해서 수시로 편리하게 사용할 수 있는 좋은 참고 자료가 될 것이다. 이 책은 초급, 중급, 고급 수준의 100가지 이상의 레시피로 구성돼 있다. 모든 레시피는 C++에 대한 사전 지식이 필요하며, 여기에는 함수, 클래스, 템플릿, 네임스페이스, 매크로 등이 포함된다.
그러므로 언어에 익숙하지 않은 독자라면 먼저 핵심 기능에 익숙해지도록 C++ 입문서부터 읽고 나서 이 책과 함께하는 것이 좋다.

★ 이 책의 구성 ★
1장. ‘현대 핵심 언어 특징 배우기’에서는 타입 유추, 균일한 초기화, 범위가 지정된 enum, 범위 기반 루프, 구조화 바인딩을 포함한 최신 핵심 언어 기능을 설명한다.
2장. ‘숫자와 문자열로 작업하기’에서는 숫자와 문자열을 변환하는 방법, 의사 난수를 생성하는 방법, 정규 표현식을 사용하는 방법, 다양한 문자열 타입에 대해 설명한다.
3장. ‘함수’에서는 디폴트 함수와 삭제된 함수, 가변 템플릿, 람다 표현식과 고차 함수에 대해 자세히 알아본다.
4장. ‘전처리기와 컴파일’에서는 조건부 컴파일을 수행하는 방법을 시작으로 컴파일 타임 어서션, 코드 생성, 또는 컴파일러에 속성 암시 등과 같은 컴파일의 다양한 측면을 살펴본다.
5장. ‘표준 라이브러리 컨테이너와 알고리즘, 반복자’에서는 몇 가지 표준 컨테이너와 다양한 알고리즘을 소개하고, 자신만의 임의 접근 반복자를 작성하는 방법을 배운다.
6장. ‘범용 유틸리티’에서는 chrono 라이브러리의 any, optional, variant 타입에 대해 자세히 알아보고 타입 특성을 배운다.
7장. ‘파일과 스트림 작업’에서는 스트림을 읽고 쓰는 방법, I/O 조작자를 사용해 스트림을 제어하고 파일시스템 라이브러리를 탐색하는 방법을 설명한다.
8장. ‘스레딩과 동시성 활용’에서는 스레드, 뮤텍스, 잠금, 조건 변수, 프라미스, 퓨처, 아토믹 타입과 작업하는 방법을 알려준다.
9장. ‘견고성과 성능’에서는 예외와 상수 정확성, 타입 변환, 스마트 포인터, 이동 시맨틱에 중점을 두고 알아본다.
10장. ‘패턴과 관용어 구현’에서는 핌플(PIMPL) 관용어, 비가상 인터페이스 관용어, 또는 CRTP 등과 같은 여러 가지 유용한 패턴과 관용어를 다룬다.
11장. ‘테스트 프레임워크 탐색’에서는 가장 널리 사용되는 세 가지 테스트 프레임워크인 Boost.Test, 구글 테스트, 캐치를 시작하는 데 도움이 될 만한 내용들을 소개한다.

★ 옮긴이의 말 ★
프로그래머라면 누구나 한 번쯤 C++ 프로그래밍에 도전해봤을 것이다. 그만큼 C++는 오랜 기간 동안 사랑 받아온 프로그래밍 언어임에 틀림없다. 하지만 이해하기 어려운 문법과 복잡한 구조로 인해 많은 프로그래머를 절망에 빠뜨리고 결국 포기하도록 만들었던 것도 사실이다. 그러다가 흔히 모던 C++(Modern C++)로 불리는 C++11 표준이 등장하면서 이 언어는 다시금 사람들의 관심을 받으며 새로운 전성기를 누리고 있다.
이 책은 100가지가 넘는 레시피를 통해 C++를 사용하면서 개발자들이 직면하게 되는 공통적인 문제와 그에 대한 솔루션을 제시하고 있다. 따분한 교과서 스타일이 아니라 필요한 부분을 골라 볼 수 있게 구성돼 있어 그동안 C++의 높은 벽에 좌절했던 개발자들이 쉽고 재미있게 C++ 프로그래밍의 세계에 다시 발을 담글 수 있게 해주는 책이라고 생각된다. C++11과 C++14뿐만 아니라 가장 최신 버전인 C++17에 포함된 기능까지 다루고 있어 초/중급 개발자뿐만 아니라 숙련된 개발자에게도 좋은 참고서가 될 것이라 믿는다.
상투적인 문구이기는 하지만, 작업을 마치고 나면 항상 미흡한 부분에 대해 아쉬움이 남기 마련이다. 꽤 많은 시간과 노력을 들여 작업했지만, 저자의 의도를 충분히 전달하지 못하거나 잘못 번역된 부분이 있을 수 있다. 잘못된 점을 비롯해 책의 내용과 관련된 어떤 의견이라도 보내주시면 소중히 다룰 것이다.


목차


1장. 현대 핵심 언어 특징 배우기
__소개
__가능한 한 auto 사용하기
__타입 별칭 및 별칭 템플릿 생성
__균일한 초기화 이해하기
__비정적 멤버 초기화의 다양한 형식 이해하기
__객체 정렬 제어 및 쿼리
__범위가 지정된 열거형 사용하기
__가상 메소드에 override와 final 사용하기
__범위 기반 for 루프를 사용해 범위 반복하기
__사용자 정의 타입에 대한 범위 기반 for 루프 활성화
__암시적 변환을 피하기 위해 명시적 생성자 및 변환 연산자 사용하기
__정적 전역 대신 명명되지 않은 네임스페이스 사용하기
__심볼 버전 관리에 인라인 네임스페이스 사용하기
__구조적 바인딩을 사용해 다중 반환값 처리하기

2장. 숫자와 문자열로 작업하기
__소개
__숫자와 문자열 타입 간의 변환
__숫자 타입의 제한과 기타 속성
__의사 난수 생성
__의사 난수 생성기의 내부 상태의 모든 비트 초기화
__가공된 사용자 정의 리터럴 작성
__원시 사용자 정의 리터럴 작성
__원시 문자열 리터럴을 사용한 이스케이프 문자 방지
__문자열 헬퍼 라이브러리 생성
__정규 표현식을 사용해 문자열 포맷 확인하기
__정규 표현식을 사용해 문자열의 내용 파싱하기
__정규 표현식을 사용해 문자열의 내용 바꾸기
__상수 문자열 참조 대신 string_view 사용하기

3장. 함수
__소개
__디폴트 함수와 삭제된 함수들
__표준 알고리즘에서 람다 사용하기
__제네릭 람다 사용하기
__재귀 람다 작성하기
__가변의 인수를 가진 함수 템플릿 작성하기
__접힌 표현식을 사용해 가변 함수 템플릿 단순화하기
__고차 함수 맵과 폴드 구현하기
__함수를 고차 함수로 구성하기
__호출 가능한 모든 것을 통합해 호출하기

4장. 전처리기와 컴파일
__소개
__조건부로 소스 코드 컴파일하기
__전처리기 문자열화와 연결에 간접 패턴 사용
__static_assert로 컴파일 타임 어서션 검사 수행
__enable_if로 조건부로 클래스와 함수 컴파일하기
__constexpr if로 컴파일 시 분기 선택
__속성으로 컴파일러에 메타데이터 제공하기

5장. 표준 라이브러리 컨테이너와 알고리즘, 반복자
__소개
__벡터를 디폴트 컨테이너로 사용
__비트의 고정 크기 시퀀스에 비트셋 사용
__가변 크기의 비트 시퀀스에 벡터 사용
__범위 내의 요소 찾기
__범위 정렬
__범위 초기화
__범위에서 세트 연산 사용하기
__반복자를 사용해 컨테이너에 새 요소 삽입하기
__자신만의 임의 접근 반복자 작성하기
__비멤버 함수를 사용한 컨테이너 접근

6장. 범용 유틸리티
__소개
__chrono::duration으로 시간 간격 표현하기
__표준 시계로 함수 실행 시간 측정
__사용자 정의 타입에 대한 해시 값 생성
__std::any를 사용해 값을 저장
__std::optional을 사용해 옵션 값 저장
__타입 안전한 공용체로 std::variant 사용
__std::variant 방문
__프로그램이 정상적으로 종료될 때 호출할 함수 등록하기
__타입 특성을 사용한 타입의 속성 조회
__자신만의 타입 특성 작성하기
__std::conditional을 사용해 타입 선택하기

7장. 파일과 스트림 작업
__소개
__바이너리 파일에서 원시 데이터 읽기/쓰기
__바이너리 파일에서 객체 읽기/쓰기
__스트림에 로컬 설정 사용
__I/O 조작자를 사용해 스트림 출력 제어
__통화 I/O 조작자 사용
__시간 I/O 조작자 사용
__파일시스템 경로로 작업하기
__파일과 디렉터리의 생성, 복사, 삭제
__파일에서 내용 삭제
__기존 파일 또는 디렉터리의 속성 확인
__디렉터리의 내용 열거
__파일 찾기

8장. 스레딩과 동시성 활용
__소개
__스레드로 작업하기
__스레드 함수에서 예외 처리
__뮤텍스와 잠금을 사용해 공유 데이터에 대한 접근 동기화
__재귀 뮤텍스 사용 방지
__스레드 간 통보 전송
__프라미스와 퓨처를 사용해 스레드에서 값 반환
__함수를 비동기적으로 실행하기
__아토믹 타입 사용
__스레드로 병렬 맵과 폴드 구현하기
__태스크로 병렬 맵과 폴드 구현하기

9장. 견고성과 성능
__소개
__오류 처리에 예외 사용
__오류를 던지지 않는 함수에 noexcept 사용
__프로그램의 상수 정확성 보장
__컴파일 타임 상수 표현식 생성
__올바른 타입 캐스트 수행
__unique_ptr을 사용해 메모리 자원을 고유하게 소유
__shared_ptr을 사용한 메모리 자원 공유
__이동 시맨틱 구현

10장. 패턴과 관용어 구현
__소개
__팩토리 패턴에서 반복되는 if.else문 방지
__핌플 관용어 구현
__명명된 매개변수 관용어 구현
__비가상 인터페이스 관용어를 사용해 구현과 인터페이스 분리
__변호사-의뢰인 관용어 프렌드십 처리
__회귀 템플릿 패턴을 사용한 정적 다형성
__스레드 안전한 싱글톤 구현

11장. 테스트 프레임워크 탐색
__소개
__Boost.Test 시작하기
__Boost.Test로 테스트 작성하고 호출하기
__Boost.Test로 어서트하기
__Boost.Test에서 테스트 픽스처 사용하기
__Boost.Test로 출력 제어하기
__구글 테스트 시작하기
__구글 테스트로 테스트 작성하고 호출하기
__구글 테스트로 어서트하기
__구글 테스트에서 테스트 픽스처 사용하기
__구글 테스트로 출력 제어하기
__캐치 시작하기
__캐치로 테스트 작성하고 호출하기
__캐치로 어서트하기
__캐치로 출력 제어하기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.