1. 광고배너
  2. 광고배너
/ 이전버튼 다음버튼
2
미리보기

C++17 STL 프로그래밍
저자 : 야체크갈로비치 ㅣ 출판사 : 에이콘출판 ㅣ 역자 : 권혁이,오은진

2019.06.19 ㅣ 656p ㅣ ISBN-13 : 9791161753119

정가40,000
판매가38,000(5% 할인)
적립금 1,600원 (4%)
배송일정 절판
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 기타 규격
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 컴퓨터언어 > C/C++/TURB...
최신 버전의 C++17 표준 라이브러리에 대한 풍부한 예제로 새롭게 추가된 기능 대부분과 더불어 기존 STL을 C++17에 활용할 수 있는 방법을 제시한다. 세련된 표준 데이터 구조체를 위한 언어적 기능과 표준 라이브러리 및 알고리즘, 자동 리소스 관리 포인터, 람다 표현식, 상수 표현식, 동시성 프로그래밍을 위한 편리한 스레드 제어, 정규 표현식, 난수 생성기, 예외 처리, 가변 템플릿, 사용자 정의 리터럴, 간편한 파일 시스템 순회 등 많은 기능에 대해서 다룬다.
펼쳐보기

[목 차]

1장. C++17의 새로운 기능
__소개
__묶음으로 된 반환 값을 풀기 위해 구조체 형태의 바인딩 사용
__if와 switch 구문으로 변수의 범위를 제한
__새로운 중괄호 초기화 규칙의 강점
__생성자에서 자동으로 템플릿 클래스 타입 추론
__constexpr-if로 컴파일 시간 결정 단순화


__인라인 변수로 헤더 전용 라이브러리 활성화
__표현식 접기로 간편한 헬퍼 함수 구현


2장. STL 컨테이너
__소개
__std::vector에서 삭제-제거 관용구 사용하기
__O(1) 시간으로 정렬되지 않은 std::vector의 요소 삭제
__std::vector 객체에 빠르고 안전하게 접근
__std::vector 객체 정렬 유지
__필요한 조건을 걸어 효율적으로 std::map에 요소 삽입
__std::map::insert의 새로운 삽입 판별 시맨틱 이해
__std::map 요소의 키를 효율적으로 변경
__std::unordered_map을 사용자 지정 타입으로 사용
__중복된 사용자 입력 검출 및 std::set을 이용해 알파벳순으로 출력
__std::stack으로 간단한 RPN 계산기 구현
__std::map을 이용해 단어 빈도수 카운터 구현
__std::multimap을 이용해 긴 문장을 찾는 문체 헬퍼 도구 구현
__std::priority_queue를 사용해 할 일 목록 구현


3장. 반복자
__소개
__자신만의 순환 가능한 범위 생성
__STL 반복자 카테고리와 호환되는 자신만의 반복자 생성
__제너릭 데이터 구조체를 채우기 위한 반복자 어댑터의 사용
__반복자 관련 알고리즘 구현
__역방향 반복자 어댑터를 사용해 반대로 순환
__반복자 감시자로 범위를 초과하면 반복자 종료
__확인된 반복자로 반복자 코드를 자동 검사
__자신만의 zip 반복자 어댑터 생성


4장. 람다 표현식
__소개
__람다 표현식을 이용해 실행 중인 함수 정의
__람다를 std::function으로 감싸 넣어 다형성 추가
__병합을 이용해 함수 구성
__논리 결합을 이용해 복잡한 프레디케이트 생성
__같은 입력으로 두 개 이상의 함수 호출
__std::accumulate와 람다를 이용해 transform_if 구현
__컴파일 시간에 입력 값의 데카르트 곱 생성


5장. STL 알고리즘 기본
__소개
__하나의 컨테이너에서 다른 컨테이너로 요소 복사
__컨테이너 정렬
__컨테이너로부터 특정 요소 제거
__컨테이너 내용 변환
__정렬되거나 정렬되지 않은 벡터에서 요소 찾기
__std::clamp로 벡터 값을 특정 숫자 범위로 제한
__std::search로 문자열의 패턴을 찾고 최적화된 구현 고르기
__큰 벡터 표본화
__입력 시퀀스의 순열 생성
__사전식 병합 도구 구현


6장. STL 알고리즘의 고급 사용
__소개
__STL 알고리즘을 이용한 트라이 클래스 구현
__트라이를 이용한 검색어 추천 생성기 구현
__STL 숫자 알고리즘을 이용한 푸리에 변환 공식 구현
__두 벡터의 오차 계산
__ASCII 만델브로 렌더러 구현
__자신만의 알고리즘 직접 생성: split
__표준 알고리즘을 응용해 유용한 알고리즘 만들기: gather
__단어 사이의 연속적인 공백 제거
__문자열의 압축과 압축 풀기


7장. 문자열, 스트림 클래스 및 정규 표현식
__소개
__문자열 생성 및 병합과 변환
__문자열의 처음부터 끝까지 공백 제거
__객체 생성 비용 없이 std::string 사용
__사용자 입력으로부터 값 읽어오기
__파일의 모든 단어 개수 세기
__I/O 스트림 처리자로 출력 서식 지정
__파일 입력으로부터 복잡한 객체 초기화
__std::istream 반복자로부터 컨테이너 채우기
__std::ostream 반복자로 출력 일반화
__특정 코드 영역을 위한 출력물을 파일로 전달
__std::char_traits로부터 상속받아 사용자 지정 문자열 클래스 생성
__정규 표현식 라이브러리로 입력 토큰화
__구문마다 숫자들을 언제든지 완전히 다르게 출력
__std::iostream 에러로부터 읽을 수 있는 예외 발견


8장. 유틸리티 클래스
__소개
__std::ratio를 이용한 서로 다른 시간 단위 변환
__std::chrono를 이용한 절대 시간과 상대 시간 변환
__std::optional을 이용해 실패를 안전하게 밝혀내기
__튜플에 함수 적용
__std::tuple로 빠르게 데이터 구조체 구성
__타입에 대해 더 안전한 std::any를 이용해 void* 대체
__std::variant로 다양한 타입 저장
__std::unique_ptr을 이용한 자원 자동 처리
__std::shared_ptr을 이용한 공유 힙 메모리 자동 처리
__공유 객체에 대한 weak 포인터 다루기
__스마트 포인터를 이용한 이전 API의 자원 처리 간소화
__같은 객체의 서로 다른 멤버 변수 공유
__난수 생성과 올바른 난수 엔진을 고르는 방법
__난수 생성과 STL로 특정 분배 형성


9장. 병렬 처리와 동시성
__소개
__표준 알고리즘을 사용해 자동으로 코드 병렬화
__특정 시간 동안 프로그램 멈추기
__스레드의 시작과 중단
__std::unique_lock과 std::shared_lock으로 예외에 안전한 공유 잠금 수행
__std::scoped_lock로 데드락 피하기
__std::cout 동시 사용 동기화
__std::call_once로 안전하게 초기화 지연
__std::async를 사용해 백그라운드로 작업 실행
__std::condition_variable로 생산자/소비자 관용 표현 구현
__std::condition_variable를 이용해 다수의 생산자/소비자 표현 구현
__std::async를 이용한 ASCII 만델브로 렌더러 병렬화
__std::future로 간단한 자동 병렬화 라이브러리 구현


10장. 파일 시스템
__소개
__경로 정규화 도구 구현
__상대 경로에서 기준 파일 경로 얻기
__디렉터리 내의 모든 파일 목록 구하기
__그렙과 유사한 텍스트 검색 도구 구현
__자동 파일 이름 변경 구현
__디스크 사용 카운터 구현
__파일 타입의 통계 계산
__중복 내용을 심링크로 대체해 폴더 크기를 줄이는 도구 구현

펼쳐보기
★ 이 책에서 다루는 내용 ★

■ 새로운 핵심 언어 기능과 문제 해결에 활용하는 방법 학습
■ 반복자의 내부 동작과 요구 사항을 구현함으로써 이해
■ 알고리즘과 함수형 프로그래밍 스타일, 람다 표현식 탐구
■ STL에서 제공하는 이식이 용이하며 속도가 빠르고 철저한 테스트를 거친, 잘 설계된 풍부한 알고리즘의 활용
■ 복잡한 C-스타일 코드 대신에 STL 방식의 문자열로 작업
■ 동시성 및 동기화에 대한 표준 지원 클래스의 이해와 사용 방법 학습
■ C++17 STL에서 추가로 이용 가능한 파일 시스템 라이브러리의 사용

★ 이 책의 대상 독자 ★

이 책은 프로그램을 작성하고 컴파일하는 방법을 모르는 독자가 C++를 배우기에 적합한 책이 아니다. 이미 C++ 언어의 기본에 관한 책을 읽어봤다면 고급 단계의 지식을 습득할 수 있는 다음 책이 될 것이다.
다음 항목 중 하나에 해당된다면 이 책을 추천한다.
■ C++의 기본 지식에 대해서 배웠지만, 현재의 지식과 숙련된 C++ 전문가의 지식 사이에 공백이 커서 다음 단계를 어디로 나아가야 할지 모른다.
■ C++에 대해서 잘 알지만, STL과 관련된 지식은 제한적이다.
■ C++98이나 C++11, C++14와 같이 기존 표준 C++에 대해 알고 있다. 얼마나 오래전에 C++를 사용했는지에 따라 이 책은 발견할 수 있는 근사한 새로운 STL 기능을 제공한다.

★ 이 책의 구성 ★
1장, ‘C++17의 새로운 기능’에서는 C++ 언어로 가져온 표준 C++17의 새롭고 근사한 추가 사항을 다루며, 이를 통해 다음 장부터 STL의 추가 내용에 집중할 수 있게 해준다.
2장, ‘STL컨테이너’에서는 STL 컨테이너 데이터 구조체의 풍부한 다양성으로 C++17를 사용해 어떻게 코드를 업그레이드시키는지 설명한다. 서로 다른 컨테이너 전체를 살펴보고 나서 새로운 추가 사항에 대해 자세히 살펴본다.
3장, ‘반복자’에서는 STL 알고리즘과 컨테이너 데이터 구조체가 결합해 밀접한 관계를 갖는 상당히 중요한 추상화 객체인 반복자에 대해 설명한다. 모든 프로그램에서 가장 나은 방법으로 사용할 수 있게끔 반복자 개념 전부를 밑에서부터 확인한다.
4장, ‘람다 표현식’에서는 몇 가지 아주 흥미로운 프로그래밍 패턴을 허용하는 람다 표현식을 살펴본다. C++11에서 처음 소개돼 순수 함수형 프로그래밍 언어에 영감을 받은 람다 표현식은 C++14와 C++17에서 몇 가지 새로운 기능이 추가됐다.
5장, ‘STL 알고리즘 기본’에서는 사용하기 쉽고, 매우 성능 좋고, 검증됐으며, 일반화가 돼 있는 STL 표준 알고리즘의 기본 기능을 소개한다. 이를 어떻게 사용하는지 배워서 시간 낭비 없이 문제에만 집중해 생산성을 높일 수 있다.
6장, ‘STL 알고리즘의 고급 사용’에서는 코드 중복 없이 깔끔하게 더욱 복잡한 구성으로 STL의 기본 알고리즘을 어떻게 결합하는지 시연한다. 예제에서는 더욱 복잡한 문제에 대한 해결책을 구현해 창조적이면서도 STL과 단단히 결합하게 된다. 그리고 필요에 맞게 새로운 알고리즘을 생성해 기존 알고리즘과 어떻게 결합하는지 알아본다.
7장, ‘문자열, 스트림 클래스 및 정규 표현식’에서는 문자열과 제너릭 I/O 스트림 및 정규 표현식과 관련해서 STL에서 제공하는 강력한 클래스를 살펴본다. STL의 해당 부분에 대해 깊이 있게 살펴본다.
8장, ‘유틸리티 클래스’에서는 STL로 난수 생성, 시간 측정, 동적 메모리 관리, 근사한 에러 상태를 전달하는 방법 등을 설명한다. 이와 같은 작업에 대해서 C++ STL이 제공하며, C++17에서 새롭게 추가된 아주 유용하면서도 간편한 유틸리티 클래스를 살펴본다.
9장, ‘병렬 처리와 동시성’에서는 여러 개의 코어 프로세서를 사용하는 시대에 아주 중요한 주제로 다가온 병렬성과 동시성을 위한 기존 C++의 확장을 보여준다. C++11부터 C++17에서 복수의 코어에서 실행돼 동시에 처리되는 프로그램 구현이 필요할 때마다 막대한 도움이 되는 훌륭한 기능이 추가됐다. 9장에서 해당 개념을 알아본다.
10장, ‘파일 시스템’에서는 STL이 항상 개별 파일을 읽고 조작하게 지원되는 게 아니지만, C++17에서 파일 시스템 경로를 다루거나 디렉터리를 탐색하도록 운영체제에 독립적인 완전히 새로운 라이브러리로 많은 수의 새로운 값을 얻은 걸 보여주고, 어떻게 사용하는지 알아본다.

★ 지은이의 말 ★

이 책은 C++ 언어와 표준 라이브러리인 STL이 결합한 코드를 제공해 C++17에서 추가된 기능 대부분을 활용하는 방법을 설명한다. 게다가 가치 있는 설명으로 가능한 한 많은 STL 기능을 사용한다.
C++는 이처럼 훌륭하고 강력한 언어다. 단순한 상위 레벨 인터페이스로 복잡한 해결책을 숨겨주지만, 동시에 높은 성능과 낮은 부하가 문제 되면 하위 레벨 코드를 작성해야 한다. ISO C++ 표준 위원회는 C++ 표준을 향상시키기 위해 열심히 노력한다. C++11과 C++14에서 C++17까지 C++에 훌륭한 많은 기능이 추가됐다.
현재 C++는 세련된 표준 데이터 구조체를 위한 언어적 기능과 표준 라이브러리 및 알고리즘, 자동 리소스 관리 포인터, 람다 표현식, 상수 표현식, 동시성 프로그래밍을 위한 편리한 스레드 제어, 정규 표현식, 난수 생성기, 예외 처리, 가변 템플릿, 사용자 정의 리터럴, 간편한 파일 시스템 순회 등 많은 기능을 제공한다. C++의 엄청난 기능들은 소프트웨어 산업의 전 분야에서 높은 품질과 성능의 소프트웨어를 구현하는 데 이상적인 다용도의 언어가 되게 한다.
그러나 많은 C++ 프로그래머가 C++ 언어는 열심히 배우지만, 표준 라이브러리인 STL은 그보다 뒤로 미룬다. STL의 도움 없이 C++ 언어를 사용하면 클래스를 사용하기는 하지만 표준 라이브러리가 C처럼 보이는 프로그램이 된다. 21세기의 현대 프로그램이 어떻게 보여야 한다는 게 아니다. C++를 사용하는 데 장점을 절반만 사용하기 때문에 안타까울 따름이다.
비야네 스트롭스트룹(Bjarne Stroustrup)은 『The C++ Programming Language』 중 C++11 편집본에서 다음과 같이 말했다. “해당 라이브러리와 언어의 기능은 소프트웨어 품질을 높이는 프로그래밍 기술을 지원하기 위해 존재한다는 사실을 기억하자. 이는 특정 문제를 해결하기 위해 상대적으로 고립돼 개별적으로 사용되는 대신에 빌딩의 벽돌처럼 결합해서 사용돼야 함을 뜻한다.”
이 말은 이 책에서 무엇을 다루게 되는지 정확히 알려준다. 이 책의 모든 과정은 가능한 한 실제 문제와 밀접하게 설계됐으며, STL 외에는 외부 라이브러리에 의존하지 않는다. 그래서 복잡한 설정 작업 없이도 간단하게 다룰 수 있다. 해당 과정들을 통해 독자들이 실제로 영감을 얻길 기대한다. 훌륭한 프로그래밍 언어로 상위 레벨 문제를 해결하기 위해 근사한 표준 빌딩 블록이 되도록 찾아보자.

★ 옮긴이의 말 ★

새로운 표준 C++ 라이브러리가 발표될 때마다 새로운 기능을 익히는 것은 개발자에게 즐거움을 주는 동시에 배워야 할 일이 늘어나는 것이다. 이 책은 최신 버전의 C++17에 새로 추가된 기능뿐만 아니라 기존 STL을 최신 흐름에 맞게 사용하는 방법을 알려준다. C++17에 추가된 새로운 내용을 중심으로 STL 컨테이너 및 람다 표현식을 어떻게 C++17에 맞춰 사용하는지를 다루며, STL 알고리즘 및 문자열 처리 같은 C++17 표준 라이브러리의 전반적인 내용을 소개한다.
이 책은 C++ 프로그래밍 언어에 대한 기본 지식을 바탕으로 기존의 표준 STL 라이브러리를 한 번이라도 다뤄본 독자를 위해 쓰였다. 물론 STL 라이브러리를 접해보지 못했더라도 부족한 설명은 인터넷이나 관련 자료를 참고해서 충분히 따라 해볼 수 있다. 궁극적인 목적은 C++17의 표준 라이브러리를 자유롭게 다룰 수 있게 하는 것이다.
C++17에 대한 기본 정보는 인터넷에서 찾아볼 수도 있지만, 이 책에는 풍부한 예제 코드가 다양하게 나와 있어서 이론뿐만 아니라 실습을 통해 C++17을 자신만의 방식으로 훌륭히 활용할 수 있을 것이다.
펼쳐보기
야체크 갈로비치
야체크 갈로비치(Jacek Galowicz)
독일 RWTH 아헨 공과대학에서 전기공학/컴퓨터공학 석사 학위를 받았다. 대학교 때는 강의와 연구 조교로 일하며 다양한 과학 출판물에 참여했다. 학업을 마친 후에는 프리랜서로서 3D 그래픽 프로그래밍, 데이터베이스, 네트워크 커뮤니케이션, 물리 시뮬레이션 등 다양한 분야에 걸친 여러 애플리케이션과 C, C++ 커널 드라이버를 만들었다. 최근 독일 브라운슈바이크에서 인텔과 파이어아이 기반 인텔 x86 가상화를 위한 성능 및 보안에 민감한 마이크로커널 운영체제를 프로그래밍하고 있다.
저수준(low-level) 소프트웨어에 사용되는 모던 C++에 많은 관심을 갖고 있으며, 높은 성능과 깔끔한 코딩 방식을 결합하고자 지속적으로 노력하고 있다. 최근 몇 년간 배운 순수 함수형 프로그래밍과 하스켈을 이용해 메타프로그래밍을 통한 범용 코드에도 관심을 쏟고 있다.

옮긴이 권혁이
게임 프로그래머로서 EA, 소프트맥스에서 클라이언트 파트 개발에 참여해 왔으며, 현재는 캐나다 게임회사인 Ludia에서 근무 중이다. 옮긴 책으로는 『유니티 5.x Shader와 Effect 제작』(에이콘, 2016)이 있다.

옮긴이 오은진
신문방송학을 전공하고 외신기자 및 해외홍보 팀을 거쳐 현재는 캐나다 몬트리올에 본사를 둔 게임 관련 회사의 Localization Manager로 일하고 있다. 이상형인 남편을 만나 공동 번역에서 잔소리 파트를 맡고 있다.
펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기