C++/C++ 자료구조 5

[C++/자료구조]map, unordered_map

map과 unordered_map에 대하여 알아보겠습니다.map/unordered_map 이란?주요 함수예시 코드A. map/unordered_map이란?가. mapmap이란 key-value 쌍으로 데이터를 저장하는 연관 컨테이너입니다.map은 C++에서 트리로 구현되어 있으며, 레드-블랙 트리를 사용합니다. map의 특징으로는1. Key - value 쌍으로 저장2. Key 중복 허용 X3. Key 기준으로 오름차순 정렬4. 탐색, 삽입, 삭제의 시간복잡도는 O(log n)정도가 있겠습니다. 나. unordered_mapunordered_map이란 해시 테이블을 기반으로 구현된 연관 컨테이너입니다.키와 값의 쌍을 저장하며, map과 유사하지만, unordered_map은 키를 정렬하지 않습니다.대신에..

[C++]set/unordered_set

set과 unordered_set에 대하여 알아보겠습니다.set/unordered_set 이란?주요 함수코드 예시A. set/unordered_set 이란?가. setset이란 고유한 값을 특정한 순서에 따라 저장하는 컨테이너입니다.set은 중복된 값이 존재하지 않고, 삽입하는 순서에 상관없이 정렬돼서 입력이 됩니다. 나. unordered_setunordered_set이란 해시 테이블 기반으로 구현된 연관 컨테이너로, 중복되지 않는 요소를 저장합니다.set은 정렬이 되어 저장되지만, unordered_set은 정렬이 되지 않은 상태로 저장됩니다. 일반적으로 set은 O(logN)의 시간복잡도를 가지고, unordered_set은 O(1)의 시간 복잡도를 가집니다. 두 컨테이너를 사용하기 위해서는, 헤더..

[C++]Deque

덱(Deque)에 대하여 알아봅시다.덱(Deque)의 정의주요 함수예시 코드A. 덱(Deque)이란?덱(Deque)은 Double-Ended Queue의 줄임말로,양쪽 끝(front, back)에서 모두 삽입(push)과 삭제(pop)가 가능한 동적 배열 컨테이너입니다.덱은 스택(Stack), 큐(Queue)와 다르게 인덱스로 접근이 가능하다는 장점이 있습니다.그리고 Deque는 스택, 큐와 달리 컨테이너이기 때문에, clear 함수가 가능합니다.(스택, 큐는 컨테이너 어댑터입니다) 덱 또한 헤더에 덱을 선언해 주셔야 사용이 가능합니다.#include B. 주요 함수함수기능deque.push_back(element)뒤에 요소를 추가합니다deque.push_front(element)앞에 요소를 추가합니다d..

[C++]Vector

C++ 에서 자주 사용되는 STL 컨테이너 중 하나인, Vector에 대하여 알아보겠습니다. Vector란?Vector의 초기화Vector 주요 함수Vector + pairA. Vector란?Vector는 C++ 표준 라이브러리에서 제공하는 템플릿 클래스로, 자동으로 메모리가 할당되는 배열입니다.Vector는 다음과 같은 특징을 가집니다.1. 동적 배열 : 배열처럼 연속된 메모리 공간을 사용하지만, 크기를 자동으로 조절합니다.2. 여느 STL처럼, 여러 데이터값을 넣을 수 있습니다.3. []연산자를 통해 배열과 같이 특정 인덱스의 요소에 바로 접근할 수 있습니다. B. Vector의 초기화기본적으로, vector 헤더를 먼저 선언하셔야 합니다.#include 그렇다면 이제 Vector를 선언해 봅시다...

[C++]Stack

C++의 Stack(스택)에 대하여 알아보겠습니다. 스택(Stack)이란?스택 사용법A. 스택(Stack)이란?Stack은 대표적인 후입선출 LIFO(Last In, First Out)구조로서, 마지막에 넣은 데이터가 처음으로 빠져나오는 구조입니다. Stack은 메모리를 연속적으로 할당하지 않고, 필요할 때만 동적으로 할당합니다.따라서 메모리 관리에 효율적입니다. Stack을 사용하려면, Stack 헤더를 사용하여야 합니다.#include B. 스택 사용법 #include #include using namespace std;int main() { stack st;}먼저, stack을 선언하여 줍니다.선언 시, 자동으로 빈칸으로 초기화 되기 때문에, 따로 초기화를 해주지 않아도 됩니다.또한, int..