728x90

스트롭스트룹 9

A Tour of C++ : 11장 컨테이너

. 11. 컨테이너 11.1 소개 컨테이너(container) = 객체를 저장하는 것이 주 목적인 클래스 ​ 11.2 vector 요소들은 메모리에 연속적으로 저장. 구현 구성 요소들. 첫 요소, 마지막 요소 다음, 할당된 공간의 마지막의 다음을 가리키는 포인터 (elem, space, last) ​ 요소 타입 값들로 초기화 vector phone_book = { {“David Hume”, 123456}, {“Karl Popper”, 234567}, {“Bertrand Arthur William Russell”, 345678} } ​ Entry 클래스에 number; return 0; } 컴파일러는 적은 구간 for 루프를 이런 식으로 구현. 반복자 p 의 요소 참조는 *p. ++p 는 다음요소. p->..

A Tour of C++ : 10장 입력과 출력

. 10. 입력과 출력 10.1 소개 입출력 스트림 (I/O Stream) 텍스트와 수치 값에 대한 Formatted / Unformatted Buffered I/O 지원. ostream / istream 타입 있는 값(‘c’, 123, (123,45)과 바이트 시퀀스 사이를 스트림 버퍼를 통해 변환. 타입 민감성 보장, 사용자 정의 타입에 맞게 확장 가능. 이러한 스트림 이용 std::string 의 입출력과 string 버퍼를 이용한 형식화, 파일 입출력 가능. ​ 모든 입출력 스트림 클래스는 소유 자원(버퍼, 파일핸들 등)을 해제하는 소멸자를 포함. ‘자원 획득이 곧 초기화’(RAII)의 한 예. ​ 10.2 출력 에서 모든 내장 타입 출력 연산 정의. 의 오른쪽 항은 어떤 입력이 허용되고 대상이 ..

A Tour of C++ : 9장 문자열과 정규 표현식

. 9. 문자열과 정규 표현식 9.1 소개 C++ 표준 라이브러리 std::string 타입. string_view 타입을 이용하면 string, char[] 상관없이 문자열 시퀀스 조작 가능. 정규표현식 제공. ​ ​ 9.2 문자열 string 타입의 활용. s1 = s1 + ‘\n’; s2 += ‘\n’; ​ string name = “Niels Stroustrup’; ​ string s = name.substr(6,10); // s = “Stroustrup”; name.replace(0, 5, “nicholas”); // name = “nicholas Stroustrup”; name[0] = toupper(name[0]); // name = “Nicholas Stroustrup”; ​ if ( na..

A Tour of C++ : 8장 라이브러리의 개요

. 8. 라이브러리의 개요 ​ 8.1 소개 string, ostream, variant, vector, map, path, unique_ptr, thread, regex, complex 등의 표준 라이브러리 타입 간략히 설명. ​ 8.2 표준 라이브러리 구성 요소 - 메모리 할당, 실행 시간 타입 정보, C 표준 라이브러리 - 국제 문자 세트 지원, 지역화, 부분 문자열 읽기 전용 뷰 등의 문자열. (9.2) - 정규 표현식 매칭 지원. (9.4) - I/O 스트림. - vector, map 등의 컨테이너, find(), sort(), merge() 등의 알고리즘 프레임워크. (STL) - 표준 수학 함수, 복소수, 산술 연산 벡터, 난수 생성기 등의 수치 계산 지원 - thread, lock 등 동시성..

A Tour of C++ : 7장 컨셉과 제네릭 프로그래밍

. . 7. 컨셉과 제네릭 프로그래밍 7.1 소개 템플릿의 기능 - 타입을 정보의 손실 없이 인자로 전달. 인라인을 활용할 기회 커짐 - 인스턴스화 시점에 여러 경우에 따라 정보를 달리함으로 최적화 - 상수 값을 인자로 전달, 컴파일 시간 계산 수행 가능. ​ 컴파일 시간에 계산과 타입 조작 메커니즘 제공, 코드를 명료하고 효율적으로 만듬. 타입(클래스)은 코드와 값을 모두 포함할 수 있다는 것이 중요. ​ 가장 우선적/일반적 사용 목적은 제네릭 프로그래밍 지원. “일반적”인 알고리즘 설계, 구현에 집중. ​ 7.2 컨셉(C++20) 어떤 템플릿 함수의 첫 템플릿 인자가 시퀀스의 한 종류이고, 두 번째 템플릿 인자가 수의 한 종류인 경우. 이런 요구 사항을 컨셉(concept)이라 함. ​ 7.2.1 컨..

A Tour of C++ : 6장 템플릿

. . 책 읽으면서 정리한 메모 6. 템플릿 파라미터화된 타입 : 제한된 템플릿 인자, 값 템플릿 인자, 템플릿 인자 추론 파라미터화된 연산 : 함수 템플릿, 함수 객체, 람다 표현식 템플릿 메커니즘 : 가변 템플릿, 별칭, 컴파일 시간 if ​ 6.1 소개 템플릿은 타입이나 값의 집합을 파라미터화한 클래스나 함수. ​ 6.2 파라미터화된 타입 template 는 template 와 동일. “모든 타입 T에 대해”라는 C++ 표현. ​ template class Vector { // ... } ​ Vector vc(200); // 문자 200개를 포함하는 벡터 Vector vs(17); // 문자열 17개 Vector vli(45); // 정수의 리스트 45개 ​ 템플릿+인자 = 인스턴스화 or 특수화 ..

A Tour of C++ : 5장 필수적인 연산

. . 책 읽으면서 정리한 메모 5. 필수적인 연산 소개 : 필수적인 연산, 변환, 멤버 초기화 복사와 이동 : 컨테이너 복사, 컨테이너 이동 자원 관리 관례적인 연산 : 비교, 컨테이너 연산, 입력과 출력 연산, 사용자 정의 리터럴, swap(), hash ​ 5.1 소개 == 와 >, second 12.7i -> imaginary. 12.7i+47 = complex. (47,12.7) ​ 5.4.5 swap() 두 객체의 값을 뒤바꾸는 swap() 함수. 굉장히 빠르고 예외를 던지지 않는다고 가정. tmp=a, a=b, b=tmp 로 정의. ​ 5.4.6 hash 표준 라이브러리 unordered_map 해시테이블. ​ 5.6 조언 [3] 필수 연산자를 정의할 거면 모두 하거나, 아무것도 하지 않거나..

A Tour of C++ : 4장 클래스

. . 4. 클래스 ​ 4.1 소개 4~7 장은 C++의 추상화 지원, 자원 관리 훑어봄 - 4장 : 새로운 타입(사용자 정의 타입) 정의하고 사용방법 가볍게. 구체 클래스(Concrete class), 추상 클래스(abstract classes), 클래스 계층 구조(class hierarchies) 기본 속성, 구현 기법, 언어 기능 - 5장 : 생성자, 소멸자, 대입 연산 등. C++ 특별한 의미 연산자 설명. 객체의 생애 주기와 자원관리 지원 방법. - 6장 : 타입 파라미터화, 타입 알고리즘 파라미터화= 템플릿(template). 템플릿 함수, 함수 객체로 일반화 - 7장 : 제네릭 프로그래밍 개념, 기법, 언어 기능.템플릿 인터페이스 표현, 설계 가이드 컨셉 정의, 사용 방법. 일반적이고 유연한..

A Tour of C++ : 3장 모듈화

. . 3. 모듈화 3.1 소개 C++ 프로그램은 독립적으로 개발된 여러 부분으로 구성. 함수, 사용자 정의 타입, 클래스 계층 구조, 템플릿 등. 핵심 = 구송 요소들의 상호작용을 명확하게 정의하는 것. 첫 단계 = 인터페이스와 구현을 분리 ​ 3.2 분할 컴파일 사용할 타입과 함수의 선 : 사용할 타입과 함수의 정의 각각 분리된 파일에 존재, 따로 컴파일할 수 있어 프로그램을 반독립적(semiindependent) 코드 조각 집할들로 조직화. 이런 분리는 컴파일 시간 최소화, 논리적 구분/분리를 강제 (에러 소지도 줄어듬) 분할 컴파일된 코드 조각을 흔히 라이브러리라고 부르기도 ​ vector.h vector.cpp, user.cpp ​ vector.h의 정의와 인터페이스는 공유하지만, 두 cpp 파..

728x90
반응형