C++ 표준 라이브러리(STL, Standard Template Library)에는 다양한 컨테이너가 제공됩니다. 이들은 데이터를 저장하고 조작하기 위한 다양한 자료구조를 추상화한 도구입니다. 컨테이너는 크게 순차 컨테이너, 연관 컨테이너, 그리고 어댑터 컨테이너로 나눌 수 있습니다.
컨테이너 종류 | 특징 |
순차 컨테이너 | 데이터가 순차적으로 저장되며, 인덱스를 통한 순차적 접근이 가능. |
std::vector | 동적 배열, 임의 접근 빠름, 중간 삽입/삭제는 느림. |
std::deque | 더블 엔디드 큐, 양쪽 끝에서 삽입/삭제가 빠름. |
std::list | 양방향 연결 리스트, 삽입/삭제가 빠르나 임의 접근은 느림. |
std::array | 고정 크기 배열, 메모리 관리가 효율적, 임의 접근 빠름. |
std::forward_list | 단방향 연결 리스트, 메모리 절약, 삽입/삭제 효율적. |
연관 컨테이너 | 키-값 쌍을 저장하고, 빠른 검색을 지원하는 컨테이너. |
std::map | Red-Black Tree, 키에 대해 자동 정렬, 키 중복 허용하지 않음. |
std::multimap | std::map과 비슷하지만, 같은 키를 여러 번 저장 가능. |
std::unordered_map | 해시 테이블, 키의 정렬 순서 보장하지 않음, 평균적으로 O(1)의 시간 복잡도 |
std::unordered_multimap | std::unordered_map과 비슷하지만, 같은 키를 여러 번 저장 가능. |
어뎁터 컨테이너 | 큐, 스택, 우선순위 큐 등 특수한 요구를 처리하는 컨테이너들. |
std::stack | LIFO 방식, 스택의 끝에서만 삽입/삭제. |
std::queue | FIFO 방식, 큐의 앞에서 삽입, 뒤에서 삭제. |
std::priority_queue | 우선순위 큐, 우선순위에 따라 데이터 처리. |
배열 및 비트셋 | 고정된 크기 배열 또는 비트 필드를 관리하는 컨테이너들. |
std::bitset | 고정 크기 비트 집합, 비트 연산을 효율적으로 처리. |
집합 관련 컨테이너는 따로 분류합니다. 집합 관련 컨테이너가 순차 컨테이너나 연관 컨테이너와 구분되는 이유는 집합 관련 컨테이너의 동작 방식과 목적에 있습니다. 순차 컨테이너나 연관 컨테이너와는 약간 다른 특성을 지니기 때문에 별도로 분류되는 경우가 많습니다.
컨테이너 종류 | 특징 |
std::set | Red-Black Tree, 중복된 원소를 허용하지 않음, 자동 정렬. |
std::multiset | std::set과 비슷하지만, 중복된 원소를 허용. |
std::unordered_set | 해시 테이블, 중복된 원소를 허용하지 않음, 정렬되지 않음. |
std::unordered_multiset | std::unordered_set과 비슷하지만, 중복된 원소를 허용. |
집합 컨테이너에 대해 알고 싶다면 아래 글을 참고하세요.
https://coding-potato-record.tistory.com/267
STL 컨테이너 - set
setC++에서 std::set은 **STL(Standard Template Library)**에서 제공하는 컨테이너 중 하나로, 키 값을 기준으로 정렬된 순서로 요소를 저장하는 컨테이너입니다. 특히 집합을 다룰때 적합한 컨테이너입니다.
coding-potato-record.tistory.com
'C++ > STL 컨테이너' 카테고리의 다른 글
반복자(iterator)에 대해 (0) | 2025.01.08 |
---|---|
STL 컨테이너 - unordered_set (0) | 2025.01.08 |
STL 컨테이너 - unordered_map (0) | 2025.01.08 |
STL 컨테이너 - set (0) | 2025.01.07 |
STL 컨테이너 - forward_list (0) | 2025.01.07 |