목록C++/문법 및 메소드(STL) (35)
나만의 작은 도서관

오버로딩(Overloading)이란?오버로딩은 같은 이름의 함수를 여러 개 정의할 수 있도록 하는 기능을 의미한다.오버로딩 시 같은 이름의 함수를 호출했을 때 매개변수의 개수나 타입에 따라 서로 다른 함수가 호출되도록 할 수 있다.C++에서 생성자나 연산자는 특수 함수로 취급하므로 오버로딩이 가능하다. 따라서 오버로딩의 종류는 아래와 같다. 오버로딩 종류함수 오버로딩(Function Overloading)생성자 오버로딩(Constructor Overloading)연산자 오버로딩(Operator Overloading)C++ 오버로딩 규칙C++에서 오버로딩이 가능한 이유는 컴파일러가 인자 구성이 다른 함수는 이름이 같아도 서로 다른 함수로 취급하기 때문이다.즉, 컴파일러는 함수의 이름만이 아닌 함수의 시그니..

클래스(Class)란?클래스는 "특정 객체를 생성하기 위해 변수나 메서드를 정의하는 틀(템플릿)"을 의미한다.클래스(또는 구조체) 내부에 포함된 요소들을 “멤버”라고 부르며, 멤버는 변수의 타입에 따라 두 가지 멤버 접근 연산자(‘ . ’, ‘ → ’)를 통해 접근한다.일반 타입이라면 ‘ . ’, 포인터 타입이라면 ‘ → ’를 사용해 멤버에 접근한다.MyClass myClass;MyClass* myClass2 = new MyClass();myClass.data; // 일반 타입 변수는 '.'을 통해 접근myClass2->data; // 포인터 타입 변수는 '->'를 통해 역참조 접근 클래스의 선언부와 구현부C++에서 클래스는 보통 클래스 선언부와 클래스 구현부로 나눠 관리한다. 각각은 다음과 같다.클래..
동적 할당이란?크기가 가변적으로 변할 수 있는 메모리, 즉, 동적 메모리를 할당하는 것을 의미한다.C++에서는 malloc-free, new-delete을 이용해서 동적 할당을 할 수 있다.할당 시, 메모리는 힙(heap) 영역에 위치한다.malloc-free 방식C 스타일의 동적 할당 방식. 기존의 C는 힙 영역을 활용하지 않았지만, 시대의 요구에 따라 힙(heap) 상에서의 메모리 할당을 지원하기 위해 생겼다.malloc: 힙에 메모리를 할당하는 “함수”넣어준 값만큼 메모리를 할당한다. (바이트 단위)메모리 할당 성공 시, 시작 주소를 가리키는 void 타입 포인터를 반환한다. 메모리 할당을 실패했다면(ex. 메모리 부족) null을 반환한다.free: 힙에 할당한 메모리를 해제하는 “함수”넣어준 식..
STL Container의 공통된 기능 : 비교 연산자와 반복자STL 컨테이너들은 공통적으로 비교 연산자와 반복자를 지원한다. 단, 컨테이너 어뎁터에 반복자를 지원하지 않는 것처럼 일부 컨테이너들은 지원하지 않는 경우가 있다. 비교 연산자 오버로딩 지원순서 개념이 없는 unordered_xxx 계열의 컨테이너가 크기 비교(, >=) 연산자를 제공하지 않는다는 점을 제외하면 모든 컨테이너가 비교 연산자를 지원한다. 컨테이너들은 비교할 때 내부적으로 "std::lexicographical_compare"를 이용하여 사전식(lexicographical order)으로 비교한다. +) 참고로, 연관 컨테이너는 값과 상관없이 오로지 key를 기준으로 비교한다. 제공하는 연산자 종류는 아래와 같다.operator=..

컨테이너 어뎁터란? 컨테이너 어뎁터(Container Adapters)는 C++에서 제공하는 STL 컨테이너 종류(시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어뎁터) 중 하나로, 기존 컨테이너(deque, vector, list 등)를 감싸서 "특정 용도로 변형한" 컨테이너이다. 컨테이너 어뎁터 종류스택(stack)큐(queue)우선순위 큐(priority queue) 컨테이너 어뎁터 공통 제약 사항 initializer_list 생성자 없음컨테이너 어뎁터는 공통적으로 initializer_list 생성자를 가지고 있지 않는다. 따라서 아래와 같이 초기화할 수 없다.queue q = {1, 2, 3, 4, 5}; // X initializer_list 생성자를 사용하고 싶다면, 기본 컨테이너를 ini..

연관 컨테이너란? 연관 컨테이너(Associative Containers)는 C++에서 제공하는 STL 컨테이너 종류(시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어뎁터) 중 하나로, 키(key)와 값(value)을 연관지어 데이터를 저장하는 컨테이너이다. 연관 컨테이너의 종류set / mapmultiset / multimapunordered_set / unordered_map셋(set)이란?셋은 특정 키(key)가 컨테이너 안에 존재하는지 알아보기 위한 자료구조이다.중복되는 원소는 허용하지 않는다.내부 구조가 레드-블랙 트리(RB-Tree)로 구현되어 있음으로, 아래와 같은 특성을 가진다.원소의 검색 / 삽입 / 삭제가 O(logN)의 시간복잡도를 가진다.원소들은 정렬된 상태를 유지한다. (기본 정렬 기..