최신 C++20 표준을 기반으로, 표준 템플릿 라이브러리(STL)를 실무에서 효과적으로 활용하는 방법을 안내하는 실전 중심의 활용서다. 단순한 문법 설명을 넘어, 실제 개발 환경에서 마주할 수 있는 문제들을 다양한 레시피 형식의 예제를 통해 해결하며, STL의 구조와 작동 방식을 정확하고 체계적으로 설명한다.
컨테이너, 알고리즘, 반복자, 람다 표현식, 유틸리티 클래스 등 STL의 핵심 요소는 물론, C++20에서 새롭게 도입된 기능까지 폭넓게 다루며, 동시성 프로그래밍, 메모리 관리, 문자열 처리와 같은 고급 주제도 함께 소개한다. 이를 통해 기초를 다지고 싶은 입문자부터, 실무 적용에 고민이 많은 개발자, 모던 C++ 스타일을 익히고 싶은 숙련자까지 모두에게 실질적인 도움을 줄 수 있도록 구성되어 있다. STL을 제대로 활용하고 싶지만 막막했던 분들, 최신 C++ 표준을 기반으로 더 나은 코드를 작성하고 싶은 분들에게 이 책은 가장 빠르고 확실한 길잡이가 되어줄 것이다.
상세이미지
저자 소개
목 차
1장 C++20의 새로운 기능
- 예제 코드
- 새로운 format 라이브러리로 텍스트 서식화하기
- constexpr로 컴파일 타임에 벡터와 문자열 사용하기
- 서로 다른 타입의 정수 안전하게 비교하기
- 삼중 비교를 위해 우주선 연산자(⇔) 사용하기
- 헤더를 사용하여 기능 시험 매크로 쉽게 찾기
- 컨셉과 제약조건을 통해 더 안전한 템플릿 만들기
- 모듈을 사용하여 템플릿 라이브러리의 재컴파일 피하기
- 레인지를 사용하여 컨테이너에 뷰 생성하기
2장 일반적인 STL 기능
- 예제 코드
- 새로운 span 클래스를 사용하여 C 배열을 안전하게 만들기
- 구조적 바인딩을 사용하여 다수의 값 반환하기
- if와 switch문 안에서 변수 초기화하기
- 템플릿 인수 추론을 사용하여 단순성과 명확성 높이기
- if constexpr 문을 사용하여 컴파일 타임 결정 단순화하기
3장 STL 컨테이너
- STL 컨테이너 타입에 대한 빠른 개요
- 예제 코드
- 단일 제거 함수를 사용하여 컨테이너의 값 제거하기
- 정렬되지 않은 벡터에서 상수 시간으로 값 제거하기
- 벡터의 요소에 직접적이고 안전하게 접근하기
- 벡터의 요소들의 정렬 유지하기
- 맵에 요소를 효율적으로 삽입하기
- 맵 항목의 키를 효율적으로 변경하기
- unordered_map에 사용자 정의 타입의 키 사용하기
- set으로 사용자 입력을 정렬하고 필터링하기
- deque으로 단순한 RPN 계산기 만들기
- map으로 단어 빈도수 계산기 만들기
- 벡터의 벡터로 긴 문자열 찾기
- multimap으로 작업 목록 만들기
4장 호환성있는 반복자
- 반복자가 기본
- 반복자 카테고리
- 반복자 컨셉
- 예제 코드
- 반복 가능한 레인지 생성하기
- 반복자를 STL 반복자 특성과 호환되게 하기
- 반복자 어댑터를 사용하여 STL 컨테이너 채우기
- 반복자로 생성기 만들기
- 역방향 반복자 어댑터를 사용하여 역방향으로 반복하기
- 센티널을 넣어 길이를 알 수 없는 객체 반복하기
- zip 반복자 어댑터 만들기
- 임의 접근 반복자 만들기
5장 람다 표현식
- 람다 표현식
- 클로저
- 예제 코드
- 람다를 사용하여 범위가 지정된 재사용 가능한 코드 만들기
- 람다를 알고리즘 라이브러리의 서술로 사용하기
- std::function을 다형적 래퍼로 사용하기
- 재귀로 람다 접합하기
- 서술을 논리적 결합으로 합치기
- 같은 입력으로 여러 람다 호출하기
- 맵 기반 람다를 사용하여 점프 테이블 만들기
6장 STL 알고리즘
- 예제 코드
- 한 반복자에서 다른 반복자로 복사하기
- 컨테이너의 요소들을 문자열로 합치기
- std::sort로 컨테이너 정렬하기
- std::transform으로 컨테이너 변경하기
- 컨테이너에 있는 아이템 찾기
- std::clamp로 컨테이너에 있는 값 한정하기
- std::sample로 데이터 집합의 표본 추출하기
- 일련의 데이터로부터 순열 생성하기
- 정렬된 컨테이너 병합하기
7장 문자열, 스트림과 서식화
- 문자열 서식화
- 예제 코드
- string_view 클래스를 경량 문자열 객체로 사용하기
- 문자열 접합하기
- 문자열 변형하기
- C++20의 format 라이브러리로 텍스트 서식화하기
- 문자열의 공백 제거하기
- 사용자 입력으로 문자열 읽기
- 파일에 있는 단어 수 세기
- 파일 입력으로 복합 구조 초기화하기
- char_traits로 문자열 클래스 커스터마이징하기
- 정규 표현식으로 문자열 파싱하기
8장 유틸리티 클래스
- 예제 코드
- std::optional로 선택적 값 관리하기
- 타입 안정성을 위해 std::any 사용하기
- std::variant로 서로 다른 타입 저장하기
- std::chrono로 시간 이벤트 다루기
- 가변 튜플을 위한 폴드 표현식 사용하기
- std::unique_ptr로 할당된 메모리 관리하기
- std::shared_ptr로 객체 공유하기
- 공유된 객체를 위한 약한 포인터 사용하기
- 관리 객체의 멤버 공유하기
- 난수 엔진 비교하기
- 난수 분포 생성기 비교하기
9장 동시성과 병렬성
- 예제 코드
- 특정 시간 동안 슬립하기
- 동시성을 위해 std::thread 사용하기
- 동시성을 위해 std::async 사용하기
- 실행 정책에 따라 STL 알고리즘 병렬로 실행하기
- 뮤텍스와 잠금으로 데이터 안전하게 공유하기
- std::atomic으로 플래그와 값 공유하기
- std::call_once로 스레드 초기화하기
- std::condition_variable을 사용하여 생산자?소비자 문제 해결하기
- 다수의 생산자와 소비자 구현하기
10장 파일 시스템 사용하기
- 예제 코드
- path 클래스를 위한 std::formatter 특수화하기
- path를 위한 조작 함수 사용하기
- 디렉터리의 파일 나열하기
- grep 유틸리티로 디렉터리와 파일 찾기
- regex와 directory_iterator로 파일명 변경하기
- 디스크 사용량 카운터 만들기
11장 생각해볼 주제들
- 예제 코드
- 검색 제안을 위한 trie 클래스 만들기
- 두 벡터의 오차 합 계산하기
- 나만의 split 알고리즘 만들기
- 기존 알고리즘을 레버리지하는 gather 알고리즘 만들기
- 연속된 공백 제거하기
- 숫자를 단어로 변환하기
출판사 서평
《예제로 배우는 C++ STL》은 최신 C++20 표준을 기반으로, STL의 핵심 개념을 가장 실용적이고 체계적인 방식으로 익힐 수 있도록 구성된 책입니다.
많은 C++ 개발자들이 STL의 방대한 기능과 복잡한 문법 앞에서 어려움을 느낍니다. 특히 실무에 어떻게 적용해야 할지, 기존 방식과 어떤 점이 다른지 고민하는 분들이 많습니다. 이 책은 그런 고민을 해결하기 위해 기획되었습니다.
단순한 문법 설명을 넘어, 실제 개발 현장에서 마주치는 문제들을 중심으로 STL을 어떻게 쓰고, 왜 그렇게 써야 하는지를 다양한 예제로 풀어냅니다. 각각의 예제는 곧바로 실무에 적용 가능한 코드 레시피로 구성되어 있어, 읽는 즉시 활용할 수 있습니다.
또한 STL을 처음 접하는 독자부터 기존 C++ 방식에 익숙한 개발자, 그리고 최신 표준에 맞춰 코드를 현대화하고자 하는 숙련자까지 모든 수준의 개발자에게 실질적인 도움을 줄 수 있도록 구성했습니다.
STL을 제대로 배우고 싶은 분, 모던 C++의 사고방식을 익히고 싶은 분, 실전 코드 중심의 학습을 원하는 분들에게 강력히 추천하는 책입니다.
지금 바로 《예제로 배우는 C++ STL》과 함께 STL의 세계를 정확하고 빠르게 마스터해 보세요.