목록C++ (60)
나만의 작은 도서관
동적 할당이란?크기가 가변적으로 변할 수 있는 메모리, 즉, 동적 메모리를 할당하는 것을 의미한다.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)의 시간복잡도를 가진다.원소들은 정렬된 상태를 유지한다. (기본 정렬 기..

시퀀스 컨테이너란?시퀀스 컨테이너(Sequence Container)는 C++에서 제공하는 STL 컨테이너 종류(시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어뎁터) 중 하나로, 원소들을 순차적으로 저장하는 컨테이너이다. 시퀀스 컨테이너의 종류벡터(vector)리스트(list, forward_list)데크(deque)배열(array) - [현재 글]배열(Array)이란?array는 C++ 스타일의 정적 배열로, 내부적으로 정적 배열(T[N])을 감싸고 있는 형태이다.array는 STL Container이므로, 기존의 C 배열과 같은 형태를 유지하면서(오버헤드 없음), C++에 추가된 반복자나 대입 연산자 등을 사용할 수 있다.정적 배열이므로 원소 삽입 / 삭제가 불가하며, 오로지 접근만 가능하다."임의의..

시퀀스 컨테이너란?시퀀스 컨테이너(Sequence Container)는 C++에서 제공하는 STL 컨테이너 종류(시퀀스 컨테이너, 연관 컨테이너, 컨테이너 어뎁터) 중 하나로, 원소들을 순차적으로 저장하는 컨테이너이다. 시퀀스 컨테이너의 종류벡터(vector)리스트(list, forward_list)데크(deque) - [현재 글] 배열(array)데크(deque, double ended queue)란?데크(deque)는 일정 크기의 작은 메모리 블록들을 가리키는 포인터 벡터와 같은 자료구조이다.동과 호수로 구분된 아파트 모양과 비슷하다.임의의 위치에 대한 데이터 접근이 빠르다. ( 시간복잡도 O(1) )“맨 앞, 맨 뒤”에 원소를 삽입 / 삭제하는 작업이 빠르다. ( 시간복잡도 O(1) )“임의의 위치..