C++ 4

(C++11) shared_ptr, enable_shared_from_this

shared_ptr https://docs.microsoft.com/ko-kr/cpp/standard-library/shared-ptr-class?view=msvc-170 shared_ptr 클래스 자세한 정보: shared_ptr 클래스 docs.microsoft.com shared_ptr은 포인터를 통해 개체의 공유 소유권을 유지하는 smart pointer이다. 여러 개체가 동일한 개체를 소유하면 reference counter(참조 카운터)를 1증가하고, 해제하면 1감소시킨다. 참조 카운터가 0이 되면 할당을 해제한다. enable_shared_from_this https://docs.microsoft.com/ko-kr/cpp/standard-library/enable-shared-from-thi..

C++ 2022.04.28

컨테이너와 반복자 살펴보기

표준 라이브러리 컨테이너는 원소를 값으로 처리한다(값 전달 방식). 다시 말해 원소의 복제본을 저장, 대입 연산자로 대입, 소멸자로 삭제한다. 그래서 항상 값을 복제할 수 있게 만들어야 한다. 원소를 레퍼런스로 처리하고 싶다면(레퍼런스 전달 방식) 원소를 그대로 넣지 않고 포인터를 사용해 저장한다. 이동 전용 타입, 즉 복제할 수 없는 타입도 컨테이너에 저장할 수 있지만, 이 때컨테이너의 연산 중 에러를 발생시킬 수 있다. 이동 전용 타입의 대표적인 예는 std::unique_ptr가 있다. 순차 컨테이너 vector deque list forward_list array 연관 컨테이너 map multimap set multiset 비정렬 연관 컨테이너(해시 테이블) unordered_map unorder..

C++ 2022.01.03

표준 라이브러리 둘러보기

C++ 프로그래머에게 가장 중요한 라이브러리는 C++ 표준 라이브러리다. 이 라이브러리 중 가장 핵심은 제네릭 컨테이너와 제네릭 알고리즘이다. 이 라이브러리는 원래 표준 템플릿 라이브러리라는 이름의 서드파티 라이브러리였다. 그래서 STL이라고 많이 부른다. 하지만 STL은 C++ 표준 용어가 아니다. 따라서 이 책은 STL이란 용어를 사용하지 않는다. 1. 코드 작성법 표준 라이브러리는 C++의 템플릿과 연산자 오버로딩 기능을 상당히 많이 사용한다. 2. C++ 표준 라이브러리 둘러보기 2.1 스트링 C++은 string 클래스를 기본으로 제공한다. 메모리 관리 뿐 아니라 인덱스 경계 검사, 대입과 비교, 추출, 부분화, 치환 등 다양한 기능을 제공한다. C++은 유니코드와 현지화도 지원한다. 그래서 다..

C++ 2022.01.03

I/O 완전 분석

C의 printf() scanf()는 굉장히 유연한 I/O 매커니즘이다. 이 함수는 정수나 문자 타입, 부동 소수점 타입, 스트링 타입만 지원한다는 한계가 있지만 이스케이프 코드와 서식 지정자로 다양한 포맷의 데이터를 읽거나 출력하는 기능을 제공한다. 하지만 printf() scanf()를 뛰어난 I/O 시스템이라 보기엔 아쉬운 점이 있다. 무엇보다 에러 처리 기능을 제공하지 않으며, 커스텀 데이터 타입을 다룰 정도로 유연하지 않고, C++와 같은 객체지향과 어울리지도 않다. C++은 스트림(stream) 이라는 정교한 입출력 메커니즘을 제공한다. 스트림은 I/O를 유연하고 객체지향적으로 처리한다. cout 스트림을 컨베이어 밸트에 비유할 수 있다. 스트림에 변수를 올려보내면 사용자 화면인 콘솔에 표시된..

C++ 2022.01.01