Programming/C++31 C++ 언어 기초 (15) - STL, vector, 알고리즘, map ▣ 표준 템플릿 라이브러리(STL) ● Standard Template Library, STL ▷ STL이란? C++이 제공하는 표준 컨테이너 클래스 템플릿 라이브러리 vector, list, stack, queue 등의 Container와 이들을 처리하기 위한 여러 연산을 포함하고 있다. ▷ STL의 구성 요소 컨테이너 container : 데이터 저장 기능 반복자 iterator : 포인터 역할 알고리즘 algorithm : 데이터 처리 기능 ● STL container 컨테이너 ▷ 데이터 저장을 위한 template의 집합이다. int나 float과 같은 기본 자료형 데이터나 사용자 정의 클래스의 객체 등을 저장한다. 다양한 연산이 제공되어서 편리하게 데이터를 활용할 수 있다. ++) 배열이 일종의.. 2020. 9. 7. C++ 언어 기초 (14) - 템플릿 template (Feat. 버블정렬) ▣ Container class & template ● Container Class 컨테이너 클래스 ▷ 객체를 저장하는 클래스로 아래와 같이 다양한 형태의 데이터를 저장한다. array 배열 queue 큐 stack 스택 list 리스트 ● Container Class의 예시 (템플릿의 필요성) ▷int형 데이터를 저장하는 stack 클래스 - Stack.h typedef int STACK_ITEM; class Stack { enum { MAXSTACK = 20 }; int top; STACK_ITEM item[MAXSTACK]; public: Stack(); bool empty(); void initialize(); void push(STACK_ITEM s); STACK_ITEM pop(); }; ty.. 2020. 9. 5. C++ 언어 기초 (13) - 추상클래스, 다중상속 ▣ 추상 클래스 ● 추상 클래스, 상세 클래스 ▷ 추상 클래스, abstract class 유사한 성격을 가지는 클래스들의 공통적인 요소를 뽑아 만든 클래스로, 일부 메소드가 구체적으로 구현되어 있지 않아 직접적인 사례가 존재하지 않는 클래스를 말한다. 추상 클래스로 객체를 직접 정의할 수 없다. 추상 클래스는 그 자체로 사용되지 않고 파생 클래스를 통해 구현되어 사용된다. 사용 목적: 정 그룹에 속하는 클래스들(파생 클래스들)이 반드시 갖고 있어야하는 행위를 지정해서 필요한 행위를 잊지 않고 정의하도록 하기 위함 ▷ 상세 클래스, concrete class 클래스의 모든 요소가 구체적으로 구현되어 직접적인 사례가 존재하는 클래스다. 상세 클래스는 객체를 정의할 수 있다. ▷ 예시 - Shapes 클래스.. 2020. 9. 4. C++ 언어 기초 (11) - 상속; 기초/파생클래스, 접근 제어, final, name binding ▣ 기초 클래스와 파생 클래스 ● 클래스의 상속 (inheritance) ▷ 공통적인 멤버를 포함하는 유사한 유형의 클래스 ▷ 일반화와 특수화를 통한 클래스 계층구조 설계 공통적인 멤버로 구성된 클래스를 기초 클래스, 기초 클래스로부터 상속받는 클래스를 파생 클래스라고 한다. 코드의 중복을 방지할 수 있다. ● 파생 클래스 선언 ▷ 파생 클래스 선언 형식 class DClassName : visibilitySpec BClassName { visibilitySpec_1: 데이터 멤버 또는 멤버함수 리스트; visibilitySpec_2: 데이터 멤버 또는 멤버함수 리스트; ... }; // DClassName: 파생 클래스 이름 // BClassName: 기초 클래스 이름 // visibilitySpec:.. 2020. 9. 3. C++ 언어 기초 (10) - 연산자 다중정의 II ▣ 대입 및 이동 대입 연산자 ● 대입 연산자( = )란? ▷ 묵시적 대입 연산자: 오른쪽 피연산자 데이터 멤버를 왼쪽 피연산자에 그대로 복사 ▷ 객체에 동적할당된 메모리를 가리키는 포인터가 포함되어 있으면 -> 얕은 복사로 인해 의도하지 않은 공유 상태의 문제가 발생할 수 있다. -> 깊은 복사를 할 수 있게 대입 연산자를 다중정의 해야 한다. ● 대입 연산자 다중정의 예시 ▷ VecF 클래스 VecF& VecF::operator=(const VecF& fv) { //VecF& 참조로 반환한다. if (n != fv.n) {//벡터의 크기가 다르면 delete[] arr;//기존 메모리 반환 arr = new float[n = fv.n];//새로 메모리 할당 } memcpy(arr, fv.arr, si.. 2020. 9. 3. C++ 언어 기초 (9) - 연산자 다중정의 ▣ 연산자 다중정의? ● 연산자 다중정의란? ▷ C++에 정의된 연산자를 사용자가 선언한 클래스 객체에서 사용할 수 있게 정의하는 것을 말한다. ● 연산자 다중정의 규칙 ▷ 연산자의 의미를 임의로 바꾸면 안된다. 예를 들어, 덧셈을 뺄셈으로 바꾸는 행위는 안된다. ▷ '연산자의 우선순위'나 '피연산자 수'와 같은 연산자의 고유한 특성이 유지되도록 만든다. ● 연산자 다중정의를 사용하는 경우 ▷ 클래스의 객체 간 대입/이동 대입 연산자의 경우 ▷ 수치형 객체의 산술 연산자 ▷ 두 객체를 비교하기 위한 관계 연산자 ▷ 스트림 입출력을 위한 >> 와 2020. 8. 31. 이전 1 2 3 4 5 6 다음 반응형