도서 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

ㆍ옮긴이 남기혁

소개
고려대학교 컴퓨터학과에서 학사와 석사를 마치고 한국전자통신연구원에서 선임 연구원으로 재직하고 있다. 번역에 참여한 책으로는 〈핵심 C++ 표준 라이브러리〉(길벗, 2021), 〈Go 마스터하기 2판〉(에이콘출판사, 2021), 〈스콧 애론슨의 양자 컴퓨팅 강의〉(에이콘출판사, 2021), 〈리팩터링 2판〉(한빛미디어, 2020), 〈전문가를 위한 C++〉(한빛미디어, 2019) 등이 있다.

보도자료

연관 프로그램

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