도서 IT전문서/IT입문서 프로그래밍/오픈소스

C++ 프로그래머가 알아야 할, C++ 표준 라이브러리

C++ 표준 라이브러리에 대해 반드시 알아야 할 사항을 간결하게 설명했다. 어떤 라이브러리가 있는지 소개하고, 어떻게 사용하는지, 어떤 경우에 사용하면 좋은지, 성능은 어떤지를 배운다. 사용법은 물론, 사용할 때 주의할 점과 팁이 곳곳에 제시되어 있다. 이 책은 C++에 익숙한 개발자를 위한 것으로, 만약 C++에 익숙하지 않다면 C++의 기본을 학습한 뒤에 이 책을 펼치기 바란다. 그러면 이 책의 내용을 훨씬 더 잘 이해하고, 잘 활용할 수 있을 것이다. 또한, 이론과 실습을 결합하여 최대한 활용할 수 있도록 코드 예제를 많이 제시했다.

 

C++의 높은 허들 넘기! 11부터 17까지 모던 C++ 라이브러리가 도와드립니다.

 

이 책은 C++17 기반의 C++ 표준 라이브러리를 다룬 레퍼런스 북으로, C++ 프로그래머가 C++ 표준 라이브러리에 대해 알아야 할 사항을 간결하게 핵심 위주로 알려드립니다. 어떤 라이브러리가 있는지 소개하고, 어떻게 사용하는지, 어떤 경우에 사용하면 좋은지를 다룹니다.

- 각 기능의 사용법과 성능

- 각 기능을 사용할 때 주의점과 팁

에 주목하고, 이론과 실습을 결합한 코드 예제를 제시하여 이해를 높였습니다.

 

이 책에서 다루는 내용

유틸리티

컨테이너 인터페이스

순차 컨테이너

연관 컨테이너

컨테이너 어댑터

반복자

콜러블

알고리즘

수학

스트링

스트링 뷰

정규 표현식

입력 스트림과 출력 스트림

파일 시스템 라이브러리

멀티스레딩

목차

1장 표준 라이브러리

__1.1 역사

__1.2 개요

____1.2.1 유틸리티

____1.2.2 표준 템플릿 라이브러리

____1.2.3 수치 연산

____1.2.4 텍스트 처리

____1.2.5 입력과 출력

____1.2.6 멀티스레딩

__1.3 라이브러리 활용

____1.3.1 헤더 파일 인클루드하기

____1.3.2 네임스페이스 지정하기

____1.3.3 실행 파일 생성하기

 

2장 유틸리티

__2.1 유용한 함수들

____2.1.1 std::min, std::max, std::minmax

____2.1.2 std::move

____2.1.3 std::forward

____2.1.4 std::swap

__2.2 함수 어댑터

____2.2.1 std::bind

____2.2.2 std::function

__2.3 페어

____2.3.1 std::make_pair

__2.4 튜플

____2.4.1 std::make_tuple

____2.4.2 std::tiestd::ignore

__2.5 레퍼런스 래퍼

____2.5.1 std::refstd::cref

__2.6 스마트 포인터

____2.6.1 std::unique_ptr

____2.6.2 std::shared_ptr

____2.6.3 std::weak_ptr

____2.6.4 순환 참조

__2.7 타입 트레이트

____2.7.1 타입 정보 검사

____2.7.2 기본 타입 카테고리

____2.7.3 복합 타입 카테고리

____2.7.4 타입 속성

____2.7.5 타입 비교

____2.7.6 타입 수정

__2.8 시간 라이브러리

____2.8.1 시점

____2.8.2 기간

____2.8.3 클럭

__2.9 std::any, std::optional, std::variant

____2.9.1 std::any

____2.9.2 std::optional

____2.9.3 std::variant

 

3장 컨테이너 인터페이스

__3.1 생성과 삭제

__3.2 크기

__3.3 접근

__3.4 대입과 맞바꾸기

__3.5 비교

 

4장 순차 컨테이너

__4.1 배열

__4.2 벡터

____4.2.1 크기 vs. 용량

__4.3

__4.4 리스트

__4.5 포워드 리스트

 

5장 연관 컨테이너

__5.1 개요

____5.1.1 원소의 추가와 삭제

__5.2 정렬 연관 컨테이너

____5.2.1 개요

____5.2.2 키와 값

____5.2.3 비교 기준

____5.2.4 탐색 함수

____5.2.5 std::map

__5.3 비정렬 연관 컨테이너

____5.3.1 개요

____5.3.2 키와 값

____5.3.3 성능

____5.3.4 해시 함수

____5.3.5 세부 사항

 

6장 컨테이너 어댑터

__6.1 스택

__6.2

__6.3 우선순위 큐

 

7장 반복자

__7.1 카테고리

__7.2 반복자 만들기

__7.3 유용한 함수

__7.4 어댑터

____7.4.1 추가 반복자

____7.4.2 스트림 반복자

 

8장 콜러블

__8.1 함수

__8.2 함수 오브젝트

____8.2.1 미리 정의된 함수 오브젝트

__8.3 람다 함수

 

9장 알고리즘

__9.1 사용법

__9.2 반복자

__9.3 순차, 병렬 실행 또는 벡터화를 적용한 병렬 실행

____9.3.1 실행 정책

____9.3.2 병렬 실행을 지원하는 알고리즘

__9.4 for_each

__9.5 원소를 수정하지 않는 알고리즘

____9.5.1 원소 탐색

____9.5.2 원소 개수 세기

____9.5.3 범위에 대한 조건 검사하기

____9.5.4 범위 비교

____9.5.5 범위 탐색하기

__9.6 원소를 수정하는 알고리즘

____9.6.1 원소와 범위 복제하기

____9.6.2 원소와 범위 교체하기

____9.6.3 원소와 범위 제거하기

____9.6.4 범위 채우고 생성하기

____9.6.5 범위 옮기기

____9.6.6 범위 맞바꾸기

____9.6.7 범위 변환하기

____9.6.8 범위 순서 바꾸기

____9.6.9 범위 회전시키기

____9.6.10 범위 무작위로 섞기

____9.6.11 중복 제거하기

__9.7 분할

__9.8 정렬

__9.9 이진 탐색

__9.10 합병 연산

__9.11

__9.12 최대 최소

__9.13 순열

__9.14 수치 알고리즘

__9.15 C++17부터 추가된 알고리즘

__9.16 C++20부터 추가된 알고리즘

 

10장 수학

__10.1 무작위수

____10.1.1 무작위수 생성기

____10.1.2 무작위수 분포

__10.2 C에서 물려받은 수학 함수

 

11장 스트링

__11.1 생성과 삭제

__11.2 C++ 스트링과 C 스트링 간 변환

__11.3 크기 vs. 용량

__11.4 비교

__11.5 스트링 결합

__11.6 원소 접근

__11.7 입력과 출력

__11.8 탐색

__11.9 수정 연산

__11.10 숫자 변환

 

12장 스트링 뷰

__12.1 생성과 초기화

__12.2 비수정 연산

__12.3 수정 연산

 

13장 정규 표현식

__13.1 문자 타입

__13.2 정규 표현식 오브젝트

__13.3 검색 결과 - match_results

____13.3.1 std::sub_match

__13.4 매치

__13.5 검색

__13.6 교체

__13.7 포맷

__13.8 반복 검색

____13.8.1 std::regex_iterator

____13.8.2 std::regex_token_iterator

 

14장 입력 스트림과 출력 스트림

__14.1 계층 구조

__14.2 입력 함수와 출력 함수

____14.2.1 입력

____14.2.2 포맷 비지정 입력

____14.2.3 출력

____14.2.4 포맷 지정자

__14.3 스트림

____14.3.1 스트링 스트림

____14.3.2 파일 스트림

____14.3.3 스트림 상태

__14.4 사용자 정의 데이터 타입

 

15장 파일 시스템 라이브러리

__15.1 클래스

____15.1.1 파일의 접근 권한 조작하기

__15.2 비멤버 함수

____15.2.1 파일을 마지막으로 쓴 시각을 읽거나 설정하기

____15.2.2 파일 시스템 공간 정보 알아내기

__15.3 파일 타입

____15.3.1 파일 타입 알아내기

 

16장 멀티스레딩

__16.1 메모리 모델

__16.2 어토믹 데이터 타입

__16.3 스레드

____16.3.1 생성

____16.3.2 수명

____16.3.3 인수

____16.3.4 연산

__16.4 공유 변수

____16.4.1 데이터 경쟁

____16.4.2 뮤텍스

____16.4.3 데드락

____16.4.4

____16.4.5 std::shared_lock

____16.4.6 스레드에 안전한 초기화

__16.5 스레드 로컬 데이터

__16.6 상태 변수

__16.7 태스크

____16.7.1 스레드 vs. 태스크

____16.7.2 std::async

____16.7.3 std::packaged_task

____16.7.4 std::promisestd::future

 

찾아보기

더보기접기

저자&기여자

ㆍ지은이 라이너 그림

소개
1999년부터 소프트웨어 아키텍트이자 팀 리더이자 강사로 일하고 있다. 2002년에는 사내 심화 강좌를 개설하고 파이썬과 C++를 강의했다. 2016년부터는 모던 C++와 파이썬에 대한 세미나와 강의를 열고 있다. 여가 시간에는 C++, 파이썬, 하스켈 프로그래밍을 즐기며 컨퍼런스에서 발표하는 것을 좋아한다. 매주 블로그에 글을 올리고 있다. 오라일리에서 독일어로 『C++ Standardbibliothek』, 『C++ für Programmierer』, 『C++ kurz & gut』 등을 출간했고, 영어로는 『C++20: Get the Details』 등을 출간했다. 블로그 https://www.modernescpp.com

ㆍ옮긴이 남기혁

소개
고려대학교 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 선임 연구원으로 재직하고 있으며, 현재 ㈜프리스티에서 네트워크 제어 및 검증 소프트웨어 개발 업무를 맡고 있다. 『GWT 구글 웹 툴킷』(2008), 『해킹 초보를 위한 USB 공격과 방어』(2011), 『자바 7의 새로운 기능』(2013), 『iOS 해킹과 보안 가이드』(2014), 『Neutron 오픈스택 네트워킹』(2015), 『실전 IoT 네트워크 프로그래밍』(2015), 『애플 워치 WatchKit 프로그래밍』(2015), 『현대 네트워크 기초 이론』(2016), 『도커 컨테이너』(2017), 『스마트 IoT 프로젝트』(2017), 『파이썬으로 배우는 인공지능』(2017), 『메이커를 위한 실전 모터 가이드』(2018), 『트러블 슈팅 도커』(2018), 『Go 마스터하기』(2018) 등을 번역했다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.