C++ 프로그래머를 위한 C++11 STL 가이드
C++은 아직도 건재하다. 프로그래밍 언어 순위를 보아도 2012년부터 2014년까지 4위를 유지하고 있다. 게임 개발에서도 C++는 주력 언어로 사용하고 있다. 대부분의 게임엔진(Gamebryo, Havok, FMOD, SpeedTree, Unreal) 또한 C++로 만들어졌다.
C++ 11은 2011년 8월에 발표된 C++ 프로그래밍 언어의 차세대 표준으로, 아직 실무에 완전히 적용되지는 않았지만, 활용도가 점점 높아지고 있는 프로그래밍 언어다. 현재 대부분 플랫폼에서 100%는 아니라도 꽤 높은 수준으로 C++11을 지원하므로 새로운 표준에 맞게 C++11에 기반을 두고 프로그래밍하는 것이 좋다. 그리고 STL은 C++의 '표준 템플릿 라이브러리'로 일반적으로 많이 사용하는 자료구조나 알고리즘을 모은 라이브러리다. STL을 사용하면 프로그래밍 시간이 많이 단축할 수 있어서 C++ 프로그래밍 능력을 높이기 위해 꼭 알아야 할 기능이다.
이 책은 『Think About: C++11 STL 프로그래밍』(한빛미디어, 2013년 10월)의 개정판으로, 기존 도서가 출간된 후 독자 리뷰를 통해 들어온 요청 사항을 반영하고 초판에서 다루지 않았던 srting, 난수, 알고리즘 등의 내용을 추가하였다.
초판에서 사용한 C++ 도구인 VS(Visual Studio) 2012는 이후 VS 2013이 나왔지만, 아직 C++11의 모든 기능을 다 지원하지 못하고 있다. 그래서 VS를 통해 C++11의 모든 기능을 설명하기가 어려웠는데, 이런 문제를 해결하기 위해 개정 2판에서는 온라인 컴파일러 사용법을 소개한다. 온라인 컴파일러를 사용하면 VS나 Windows 개발자에게 설치가 간단하지 않은 Clang, gcc를 설치하지 않고도 아주 쉽게 컴파일러를 사용해 볼 수 있다.
이 책의 주요 특징은 다음과 같다.
① 최신 C++ 표준인 C++11을 다룬다.
② C++의 코어 문법보다 활용에 도움을 주는 STL을 다룬다.
③ STL 중에서 가장 많이 사용되는 것을 집중적으로 다룬다.
대상 독자
C++11 STL에 추가된 기능을 예제를 통해서 빠르게 익혀보자!
이 책은 『Think About: C++11 STL 프로그래밍』(한빛미디어, 2013년 10월)의 개정판으로, 초판의 내용을 더 보강하고, 문법보다 활용에 초점을 맞추었다. C++11에 새롭게 추가된 STL 내용 중 실무에서 사용빈도가 높은 것만을 선별하여 알려주므로 C++ STL을 어느 정도 알고 있는 개발자라면, 이 책을 통해 C++11 STL의 내용을 빠르게 훑어볼 수 있을 것이다.
또한, C++11 STL에 추가된 기능이나 문법 특징을 잘 보여주는 예제를 통해서 쉽고 빠르게 C++11 STL을 배울 수 있다. 따라서 C++11 문법을 다 모르더라도 이 책을 통해서 배운 기능만 사용한다면 기존보다 더 편하고 강력하게 C++ 프로그래밍을 할 수 있을 것이다.
다만, 깊이 있는 이론보다는 활용에 중심을 두고 있어서 STL의 깊은 부분이나 세세한 부분까지는 다루지 않는다. 하지만 이 책에서 보고 배운 것은 실제 프로그램을 개발하는 데 바로 사용할 수 있어서 독자에게는 실용적인 책이 될 것으로 생각한다. 이 책을 통해서 C++11의 새로운 STL 기능을 배우고, C++ 프로그래밍을 이전보다 더 쉽고, 강력하게 할 수 있기를 바란다.
이 책은 전작인 『Think About: C++ STL 프로그래밍』(한빛미디어, 2012년 12월, 비매품, 무료)에서 설명하고 있는 내용을 기준으로 설명하고 있다. STL에 대해 잘 알지 못하는 분들은 먼저 전작을 보고 나서 이 책을 보길 바란다.
01 C++11 기초
1.1 auto
1.2 람다
1.3 range based for
1.4 enum
1.5 nullptr
02 메모리 관리
2.1 shared_ptr
2.2 unique_ptr
03 tuple
3.1 tuple이 필요할 때
3.2 tuple 사용하기
3.3 더 간단하게 tuple 정의하기
3.4 tuple에 저장한 데이터 개수 알기
3.5 tuple의 요소를 한꺼번에 다른 변수에 담기
3.6 tuple과 tuple 합치기
04 array
4.1 array 사용하기
4.2 요소 접근
4.3 array의 크기 알기
4.4 fill을 사용하여 특정 값 채우기
05 forward_list
5.1 forward_list를 만든 이유
5.2 forward_list 사용하기
5.3 데이터 추가하기
5.4 데이터 삭제하기
5.5 정렬
5.6 중복 제거
5.7 합치기
06 unordered_map
6.1 unordered_map 사용하기
6.2 데이터 추가와 삭제
6.3 검색
6.4 검색 - 없으면 추가하기
6.5 클래스(혹은 구조체)를 key로 사용하기
07 chrono
7.1 chrono 사용하기
7.2 시간 단위
7.3 시간 연산
7.4 clock 클래스
08 std::thread
8.1 스레드 만들기
8.2 스레드가 종료될 때까지 기다리기
8.3 스레드 식별자와 스레드 교환
8.4 스레드 떼어내기와 스레드 종료 대기 가능 조사
8.5 하드웨어 스레드 개수 알기
8.6 스레드 일시 중지 및 양보하기
8.7 thread 객체를 join이나 detach하지 않고 파괴했을 때
09 동기화 객체
9.1 공유 객체 동기화하기
9.2 자동으로 락 풀기
9.3 반복하여 락 걸기
9.4 지정한 시간 동안만 락 시도하기
9.5 unique_lock
9.6 복수의 mutex 객체를 동시에 락 걸기
9.7 프로그램에서 딱 한 번만 실행하기
9.8 스레드마다 데이터 저장하기
9.9 이벤트를 사용한 동기화 객체
9.10 스레드 대기
10 std::atomic
10.1 lock-free로 공유 자원 조작하기
10.2 초기화와 읽고 쓰기
10.3 연산 조작
10.4 바꾸기와 비교 후 바꾸기
11 async/future
11.1 함수를 비동기로 실행하기
11.2 std::thread에서 비동기로 함수 실행
11.3 비동기 task
12 string
12.1 사용하기
12.2 문자열 길이 조작
12.3 문자열 접근
12.4 문자열 변경
12.5 문자열 비교
12.6 문자열 복사
12.7 문자열 검색
12.8 문자열 일부 복사
12.9 문자열 변환
12.10 hash
13 난수
13.1 사용하기
13.2 시드 값을 사용한 난수 생성
13.3 예측 불가능한 난수 생성
13.4 일정 범위 안의 난수 생성
13.5 일정 확률로 난수 생성
13.6 성공 횟수 확률
13.7 정규 분포
13.8 기본 난수 생성기
14 알고리즘
14.1 컨테이너 요소들의 조건 검사
14.2 조건에 맞는 요소만 복사하기
14.3 원하는 개수만큼 요소 복사하기
14.4 조건에 맞지 않는 요소 찾기
14.5 요소를 두 집단으로 나누기
14.6 요소들의 구분 조사
14.7 정렬 여부 조사
14.8 Heap 사용 여부 조사
14.9 요소를 연속적인 값으로 채우기
14.10 최소값과 최고값 찾기
15 기타
15.1 통일된 초기화 구문
15.2 멤버 변수 초기화
15.3 생성자에서 다른 생성자 호출하기
15.4 함수의 delete 지정
15.5 override와 final
15.6 Template Aliases
15.7 ref
15.8 function
15.9 mem_fn
15.10 system_error
15.11 std::next, std::prev, std::begin, std::end
부록
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2020-10-30 | 다운로드 |
리얼타임 eBook 안내
PDF 형식으로 제공되며, 다운로드한 eBook은 PDF 포맷을 지원하는 디바이스 또는 프로그램에서 제한없이 열람할 수 있습니다. 또한 eBook 내의 텍스트 검색 및 인쇄도 가능합니다.