[C++] set, multiset, unordered_set
·
IT/알고리즘
1. set (#include ) set의 특징 중복 제거 노드 기반으로 index 접근 불가 Red-Black 트리 기반의 균형 이진 트리 Search: O(log n) Insert: O(log n) Delete: O(log n) 장점 삽입, 삭제, 검색과 같은 기본 작업 속도가 빠르다. 균형 이진 트리를 유지하는 방식이 Red-Black 트리 기반이기 때문에 오버헤드가 크진 않다. 단점 Red-Black 트리의 노드 색상을 저장하기 위해 각 노드마다 1 bit의 추가 저장 공간이 요구된다. multiset은 중복 허용인 set이라고 생각하면 된다. unordered_set은 정렬이 아닌 set이라고 생각하면 된다. unordered_multiset은 정렬이 아닌 multiset이라고 생각하면 된다. ..
[C++] Linked List, Vector, Deque
·
IT/알고리즘
1. Linked List (#include ) 정의: 노드들이 메모리 상에 퍼져서 분포하며, 각 노드에는 Data와 다음 노드를 가리키는 Link로 이루어진 자료구조이다. Index 접근이 불가능하다. (C++ STL List: Double Linked List) Search: O(n) Insert: O(1) Delete: Search + O(1) 장점: 삽입이 빠르다. 단점: 선형 탐색을 사용하여 탐색이 느리다. link pointer에 대한 추가 메모리가 발생한다. 2. Vector (#include ) 정의: 크기가 변하는 동적 배열 자료구조이다. 배열의 크기가 기존보다 커지면 원래 크기의 2배씩 늘린다. 이때, 배열을 복사하여 다른 메모리에 저장하여 배열의 크기를 증가시킨다. (Dynamic A..