c++ 10

STL 컨테이너 종류

C++ 표준 라이브러리(STL, Standard Template Library)에는 다양한 컨테이너가 제공됩니다. 이들은 데이터를 저장하고 조작하기 위한 다양한 자료구조를 추상화한 도구입니다. 컨테이너는 크게 순차 컨테이너, 연관 컨테이너, 그리고 어댑터 컨테이너로 나눌 수 있습니다.컨테이너 종류특징순차 컨테이너데이터가 순차적으로 저장되며, 인덱스를 통한 순차적 접근이 가능.std::vector동적 배열, 임의 접근 빠름, 중간 삽입/삭제는 느림.std::deque더블 엔디드 큐, 양쪽 끝에서 삽입/삭제가 빠름.std::list양방향 연결 리스트, 삽입/삭제가 빠르나 임의 접근은 느림.std::array고정 크기 배열, 메모리 관리가 효율적, 임의 접근 빠름.std::forward_list단방향 연결 리..

자료구조 구현하기(C++) - 해시 테이블

C++에서는 STL(Standard Template Library)을 사용해 해시 테이블을 구현할 때 std::unordered_map 또는 std::unordered_set을 사용하면 됩니다. 이 두 컨테이너는 내부적으로 해시 테이블을 사용해 데이터를 저장하고 검색합니다. STL 컨테이너 - unordered_map 관련 글https://coding-potato-record.tistory.com/268STL 컨테이너 - unordered_set 관련 글https://coding-potato-record.tistory.com/269std::unordered_map을 사용한 해시 테이블 예시주요 설명std::unordered_map 사용std::unordered_map은 키와 값을 저장하며, 키를 기반으로..

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..

STL 컨테이너 - vector

vector C++의 표준 라이브러리(STL, Standard Template Library)에 포함된 동적 배열 컨테이너입니다. 이는 크기가 고정된 배열과는 달리, 필요에 따라 크기가 자동으로 조정되며 요소를 추가하거나 제거할 수 있습니다.  vector의 정의와 vector관련 함수를 사용하기 위해서는 헤더파일을 추가해야합니다. 해당 헤더파일을 추가하면 std 네임스페이스를 통해 vector를 사용할 수 있습니다. std::vector 주요 특징동적 크기 조정초기 크기를 정하지 않거나, 정한 크기를 초과하여 요소를 추가해도 자동으로 크기를 늘려줌.크기 조정은 메모리 재할당을 통해 이루어짐.임의 접근 (Random Access)배열처럼 인덱스를 통해 O(1) 시간 복잡도로 요소에 접근 가능.유연한 메..

STL 컨테이너 - array

array C++에서 std::array는 **STL(Standard Template Library)**에서 제공하는 컨테이너 중 하나로, 고정 크기의 배열을 다루기 위한 템플릿 기반 컨테이너입니다. 기존의 C 스타일 배열보다 안전성과 유용한 메서드를 제공하며, 컴파일 타임에 크기가 고정됩니다.1. std::array의 특징정적 크기:배열 크기는 컴파일 타임에 결정되며, 런타임에는 변경할 수 없습니다.안전성:경계 검사 함수(at())를 제공하여 배열 인덱스 초과 오류를 방지.연속된 메모리:내부적으로 기존 C 스타일 배열처럼 연속된 메모리를 사용.포인터를 활용한 작업이 가능하며 다른 표준 라이브러리와 잘 통합됩니다.성능:C 스타일 배열과 거의 동일한 성능을 제공합니다.추가 기능:STL 컨테이너로서 크기, ..