언어/Basic C++

[Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴파일된 프로그램이 저장되는 영역, ready-only! 2. 데이터 영역 : 전역 변수 및 정적 변수가 저장되는 영역 3. 힙 영역 : 동적으로 할당된 변수를 저장하는 영역 4. 스택 영역 : 함수 매개변수, 지역 변수 및 기타 함수 관련 데이터가 저장되는 영역 2. Heap 정적 메모리와 반대로 힙은 동적 메모리 할당에 사용되는 공간입니다. 동적 메모리 할당이란, 프로그램 실행 중에 메모리 공간을 할당받는 것을 의미하며, 프로그램의 종료와 함께 해제해주어 운영체제에 반납해야 합니다..
[Basic C++] #56_cctype, 대문자+소문자 확인 C++의 라이브러리 중 "cctype"에 대해 알아보겠습니다. cctype 헤더가 제공하는 소문자+대문자 판별 함수에 대한 내용입니다. isdigit, isupper, islower, isspace 1. 헤더 #include 2. 코드 #include #include #include using namespace std; int main() { string str = "aBF c12"; cout
[Basic C++] #55-7_템플릿 변수 C++의 템플릿 중 "템플릿 변수"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 변수 // 템플릿 변수 선언 template constexpr T pi = T(3.14................); // 정의 방법 int main() { float piToInt = pi; // pi 를 int 타입으로 초기화 double piToDouble = pi; // pi 를 double 타입으로 초기화 }
[Basic C++] #55-6_함수 템플릿 C++의 템플릿 중 "함수 템플릿"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 함수 템플릿 일반 함수를 템플릿 화하는 방법을 알아보겠습니다! 1. 템플릿 함수 예제 static const size_t NOT_FOUND = (size_t)(-1); template size_t Find(T& val, T* arr, size_t size) { for (size_t i = 0; i < size; i++) { if (arr[i] == val) return i; } return NOT_FOUND; } 위 "Find()" 함수는 특정 값, 배열, 그리고 배열의 크기를 인자로 받아 특정 값과 일치하..
[Basic C++] #55-5_템플릿 클래스의 파생 클래스, 템플릿 클래스 상속 C++의 템플릿 중 "템플릿 클래스 상속"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 클래스 상속 1. 인스턴스화 되지 않은 템플릿 원본 상속 ---> 템플릿 O 2. 인스턴스 상속 ---> 템플릿 X 인스턴스화되지 않은, 즉 원본 템플릿 클래스를 상속하는 하위 클래스는 항상 템플릿으로 작성해야 합니다. 반면에, 템플릿 클래스의 인스턴스를 상속하는 경우 하위 클래스는 템플릿일 필요가 없습니다. // 템플릿 클래스(SuperClass)의 파생 클래스(SubClass) 정의 template class SubClass : public SuperC..
[Basic C++] #55-4_템플릿 클래스의 특수화, 특정 타입에 대한 템플릿 클래스 C++의 템플릿 중 "템플릿 클래스 특수화"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 클래스의 특수화 template class MyClass { //... }; C++는 특정 타입에 대해서만 특별한 템플릿 클래스 정의를 사용할 수 있도록 하고 있습니다! 앞서 살펴봤던 "템플릿"의 구현의 목표는 "타입"에 대한 제한 없이 코드 작성이 가능한 제네릭 프로그래밍이었죠! 이때, "템플릿 특수화"라는 개념은 "특정 타입"에 대하여 다른 타입들과 다르게 "특별한 정의"를 적용하고자 하는 것입니다. 정리하자면, "특정 타입"에 대한 "특별한 ..
[Basic C++] #55-3_템플릿 메서드, 이중 템플릿 C++의 템플릿 중 "템플릿 메서드"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 메서드 MyClass myClass1; MyClass myClass2; myClass1 = myClass2; // 에러 발생!! MyClass myClass2(myClass1); // 에러 발생!! 앞서 살펴본 템플릿의 내용에 따르면 "MyClass "와 "MyClass "은 클래스 명은 같지만, 서로 다른 타입을 갖게 되어 다른 객체입니다! 따라서, 서로 간의 대입 연산 혹은 복제 연산이 불가능하겠죠... 하지만! C++는 클래스의 개별 메서드의 템플릿화를 지원합니다! 그러므로, ..
[Basic C++] #55-2_템플릿 파라미터 C++의 템플릿 중 "템플릿 파라미터"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 파라미터 template 템플릿 코드를 작성하기위해 우리는 ""안에 파라미터 목록들이 필요합니다. 이러한 파라미터 목록은 함수나 메서드의 파라미터 목록과 비슷합니다. 원하는 개수만큼 작성 할 수 있고, 꼭 "타입"이 아니어도 됩니다! 타입이 아닌(non-type) 템플릿 파라미터 template class MyClass { public: MyClass(); virtual ~MyClass(); void setElementAt(size_t x, size_t y, const T& inElement)..
[Basic C++] #55_템플릿 C++의 템플릿 중 "템플릿"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 "템플릿"은 제네릭 프로그래밍의 좋은 예시입니다. 먼저, 제네릭 프로그래밍이란 데이터 형식으로부터 독립적이며, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 프로그래밍 방식입니다. 템플릿은 데이터 타입이 "매개 변수"를 통해 표현되며, 우리는 데이터 타입의 파라미터화로 기억하면 되겠습니다! 1. 템플릿 선언 template 템플릿 선언부 먼저 살펴봅시다! 앞서 말했듯이, 템플릿은 "데이터 타입"을 파라미터화합니다. 우리는 타입 파라미터를 "T"로 가정하며, "template"과 "typename" 키워드와 ..
[Basic C++] #54_STL 작업 알고리즘, for_each() STL 알고리즘 중 "for_each 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. for_each() #include #include #include #include using namespace std; int main() { map m{ {"One", 1}, {"Two", 2} }; // for_each( 원본 범위의 첫 번째, 원본 범위의 마지막, 콜백 함수 or 람다 ) for_each(cbegin(m), cend(m), [](const auto& p) {cout
Hardii2
'언어/Basic C++' 카테고리의 글 목록 (3 Page)