C++17 STL 프로그래밍
도서명:C++17 STL 프로그래밍
저자/출판사:야체크,갈로비치/에이콘출판
쪽수:656쪽
출판일:2019-06-19
ISBN:9791161753119
목차
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장. 파일 시스템
__소개
__경로 정규화 도구 구현
__상대 경로에서 기준 파일 경로 얻기
__디렉터리 내의 모든 파일 목록 구하기
__그렙과 유사한 텍스트 검색 도구 구현
__자동 파일 이름 변경 구현
__디스크 사용 카운터 구현
__파일 타입의 통계 계산
__중복 내용을 심링크로 대체해 폴더 크기를 줄이는 도구 구현