C++ 23

STL 컨테이너 - unordered_map

unordered_map**STL(Standard Template Library)**에서 제공하는 연관 컨테이너로, 키-값 쌍(Key-Value Pair)을 저장하며, 내부적으로 **해시 테이블(Hash Table)**을 사용해 빠른 검색, 삽입, 삭제를 제공합니다. 이 컨테이너는 특히 순서가 중요하지 않고, 중복 없는 키를 통해 데이터를 빠르게 관리해야 할 때 유용합니다.0. std::map과 std::unordered_map의 차이점std::map과 std::unordered_map의 차이점을 표로 정리하면 다음과 같습니다. 두 컨테이너는 모두 키-값 쌍을 저장하는 연관 컨테이너지만, 그 내부 동작 방식에 큰 차이가 있습니다.특징std::mapstd::unoredered_map내부 자료 구조Red-B..

STL 컨테이너 - set

setC++에서 std::set은 **STL(Standard Template Library)**에서 제공하는 컨테이너 중 하나로, 키 값을 기준으로 정렬된 순서로 요소를 저장하는 컨테이너입니다. 특히 집합을 다룰때 적합한 컨테이너입니다. std::set은 다른 순차 컨테이너나 연관 컨테이너와는 따로 분류되는 경향이 있는데 이는 그들의 사용 목적이 특별하기 때문입니다. 이에 대해서는 아래에 적어두겠습니다. 혹시 std::unordered_set과 헷갈린다면 아래 글에서 둘의 차이를 확인하세요.https://coding-potato-record.tistory.com/269 C++/STL 컨테이너STL 컨테이너 - unordered_setunordered_setC++ STL에서 제공하는 컨테이너 중 하나로, ..

자료구조 구현하기(C++) - 비선형 자료구조

C++에서 다양한 자료구조는 STL(Standard Template Library) 컨테이너를 활용하여 간단하게 구현할 수 있습니다. 각 자료구조에 대해 어떤 STL 컨테이너를 사용할 수 있는지 설명하겠습니다.대표적인 비선형 자료구조의 목록과 권장 STL 컨테이너를 요약하면 다음과 같습니다.(가중치 그래프의 경우 std::map이나 std::unordered_map을 사용하여 각 간선에 가중치를 부여할 수 있습니다) std::vector 관련 글https://coding-potato-record.tistory.com/15std::list 관련 글https://coding-potato-record.tistory.com/18std::set 관련 글https://coding-potato-record.tisto..

STL 컨테이너 - forward_list

forward_listC++에서 std::forward_list는 C++ 표준 라이브러리의 컨테이너 중 하나로, 단방향 연결 리스트를 구현합니다. std::list와 비슷하지만, forward_list는 양방향 링크를 지원하지 않으며, 더 효율적인 메모리 사용과 속도를 제공합니다.  1. forward_list의 특징단방향 연결 리스트요소들은 한 방향으로만 연결됩니다. 즉, 이전 요소로 이동할 수 없고, 오직 다음 요소로만 접근 가능합니다.메모리 효율각 요소가 단일 연결만 필요하므로 std::list에 비해 메모리 오버헤드가 적습니다.빠른 삽입 및 삭제특히, 리스트의 앞부분에서의 삽입과 삭제가 매우 빠릅니다. 하지만 중간이나 끝에서의 삽입, 삭제는 std::list보다 느릴 수 있습니다.2. #inclu..

STL 컨테이너 - deque

deque 양쪽 끝에서 빠르게 삽입 및 삭제가 가능한 동적 배열 기반 컨테이너입니다. deque는 vector와 비슷하지만, 양쪽에서 삽입과 삭제가 효율적으로 이루어진다는 점에서 차이가 있습니다. 1. std::deque의 특징양방향 삽입/삭제:양쪽 끝에서의 삽입/삭제가 O(1) 시간 복잡도를 가집니다.동적 배열:메모리를 분할하여 관리하기 때문에, vector처럼 전체 메모리를 재할당하지 않아도 됩니다.임의 접근(Random Access):vector처럼 인덱스를 사용한 임의 접근이 O(1) 시간 복잡도로 가능합니다.성능:중간 삽입/삭제는 느림 (O(n)).다목적 컨테이너:큐, 덱, 스택 같은 구조를 쉽게 구현할 수 있습니다.2. 헤더 파일std::deque를 사용하려면 헤더 파일을 포함해야 합니다. ..

STL 컨테이너 - priority_queue

priority_queue **우선순위 큐(priority queue)**를 구현하는 C++ 표준 라이브러리의 컨테이너 어댑터입니다. 우선순위 큐는 큐와 유사하지만, 큐에 들어간 요소들이 삽입 순서가 아닌 우선순위에 따라 제거되는 특성을 가집니다. 즉, 우선순위가 높은 요소가 먼저 제거됩니다.기본적으로 std::priority_queue는 최대 힙(max-heap)을 사용하여 가장 큰 요소를 우선순위가 높은 요소로 간주하고, 최소 힙(min-heap)을 사용하도록 설정을 변경할 수도 있습니다. 1. std::priority_queue의 특징우선순위:기본적으로 큐에 삽입된 요소는 우선순위가 높은 순서대로 정렬됩니다. 기본 구현은 최대 힙(max-heap)을 사용하여, 가장 큰 값이 우선적으로 처리됩니다.최..

STL 컨테이너 - queue

queueC++에서 std::queue는 FIFO(First In, First Out) 방식의 컨테이너 어댑터입니다. 즉, 가장 먼저 삽입된 요소가 가장 먼저 제거되는 자료 구조입니다. 주로 대기열, 작업 큐, 이벤트 처리 등 순차적인 처리가 필요한 곳에서 사용됩니다.1. std::queue의 특징FIFO 구조:먼저 들어온 데이터가 먼저 나가는 구조입니다.컨테이너 어댑터:std::queue는 자체적인 데이터 구조가 아니라, 다른 컨테이너(기본값: std::deque)를 기반으로 동작합니다.내부적으로 std::deque 또는 std::list와 같은 컨테이너를 사용할 수 있습니다.순차 접근 불가:큐에서는 요소를 순차적으로 탐색하거나 인덱스로 접근하는 메서드가 제공되지 않습니다.효율성:삽입(push)과 삭제..

STL 컨테이너 - stack

stackC++의 std::stack은 LIFO(Last In, First Out) 원칙을 따르는 컨테이너 어댑터입니다. 즉, 마지막에 추가된 요소가 가장 먼저 제거됩니다. 스택은 주로 데이터를 순차적으로 쌓고, 나중에 하나씩 꺼내는 방식으로 사용됩니다.1. std::stack의 특징LIFO 구조:마지막에 삽입된 요소가 가장 먼저 삭제됩니다.컨테이너 어댑터:std::stack은 자체적인 데이터 구조가 아니라 다른 컨테이너(기본값: std::deque)를 기반으로 동작합니다.내부적으로 deque, vector, 또는 list를 사용할 수 있습니다.추가/제거 작업에 특화:삽입(push)과 삭제(pop) 작업에 최적화되어 있습니다.순차 접근 불가:스택에서는 요소를 순차적으로 탐색하거나 접근하는 메서드가 제공되..

STL 컨테이너 - list

list **이중 연결 리스트(doubly linked list)**로 구현된 STL 컨테이너입니다. 요소의 삽입, 삭제가 빠르며 순차적인 데이터 처리에 적합합니다. list의 특징이중 연결 리스트 기반:각 노드가 이전과 다음 노드에 대한 포인터를 포함.양방향으로 순회 가능.삽입/삭제 속도:리스트의 임의 위치에서 요소를 삽입/삭제하는 작업이 O(1).단, 특정 위치를 찾는 작업(탐색)은 O(n).연속적인 메모리를 사용하지 않음:메모리가 단편화될 수 있지만, 크기 조정 시 전체 이동이 필요하지 않음.임의 접근(Random Access) 불가능:배열이나 std::vector처럼 인덱스로 접근할 수 없으며, 순차적으로 탐색해야 함.사용법1. #include std::list를 사용하려면 반드시 헤더 파일을 포..

자료구조 구현하기(C++) - 선형 자료구조

C++에서 다양한 자료구조는 STL(Standard Template Library) 컨테이너를 활용하여 간단하게 구현할 수 있습니다. 각 자료구조에 대해 어떤 STL 컨테이너를 사용할 수 있는지 설명하겠습니다.대표적인 선형 자료구조의 목록과 권장 STL 컨테이너를 요약하면 다음과 같습니다.1. 배열 (Array)STL 추천 컨테이너고정 크기 배열: std::array동적 크기 배열: std::vectorSTL 컨테이너 - Array 관련 글https://coding-potato-record.tistory.com/20STL 컨테이너 - Vector 관련 글https://coding-potato-record.tistory.com/15구현 방법기본 배열 (Static Array)혹은 STL std::array..