본문 바로가기
Language/C++

[C++] STL Container 개념 및 특징

by 별토끼. 2018. 12. 8.
반응형

[C++] STL Container 개념 및 특징


STL(Standard Template Library) 란?

C++의 템플릿을 이용해 표준으로 정리된 라이브러리


STL의 구성 요소

1. 반복자 :STL 컨테이너에 저장된 원소들을 가리키는 포인터

2. 컨테이너 : 데이터를 저장하고 관리하기 위한 클래스 (vector, list, map, deque 등..)

3. 알고리즘 : STL에서 제공하는 함수 (ex. 정렬, 검색 등..)


컨테이너

컨테이너는 데이터를 저장하고 잘 관리하기 위한 클래스라고 생각하면 됩니다.


    • 컨테이너의 종류

1. 순차 컨테이너 (시퀀스 컨테이너)

 ex. vector(가변배열), list(연결리스트), deque(덱) 등..

 임의의 위치에 삽입, 삭제가 가능합니다.

 데이터를 순차적으로 저장합니다.

 일반적인 자료구조와 동일한 형태

 자료를 입력한 순서대로 저장하기 떄문에 저장, 검색, 알고리즘에 불리

 => 많지 않은 자료, 검색 속도 중요하지 않을 때 사용

 

 2. 연관 컨테이너

  ex. set, map, multiset, multimap 등

  일정 규칙에 따라 자료를 조직화하여 저장

  자료를 정렬/해시 등 이용해 저장하기 때문에 검색에 유리

  => 많은 양의 자료, 빠른 검색


 3. 어댑터 컨테이너

  ex. stack(LIFO), queue(FIFO)

  데이터를 미리 정해진 방식에 따라 관리

  순차 컨테이너를 변형시켜 스택 큐 우선순위 큐 형태로 저장


자료구조 개념 및 특징 

 array

 배열

장점 

 적은 양의 자료에 유리

단점 

 크기 변경 불가 

 vector

 가변배열 

 장점 

 적은 양의 자료에 유리, 크기 변경 가능, 순차 접근 가능, 랜덤 엑세스 가능

 단점 

 중간삽입삭제, 검색느림, 많은 양의 자료 불리 

 queue

 FIFO(First In First Out) 선입선출 자료구조 

(priority_queue : 우선순위 큐)

 deque

 덱(앞뒤로 넣고 빼는 큐) 

 list

 양방향 연결리스트 

 장점 

 중간삽입/삭제 가능, 크기 변경 가능, 적은 양의 자료 유리, 순차 접근 가능

 단점 

 많은 양의 자료에 불리, 랜덤 엑세스 불가, 검색 느림 

 forward_list 

 단방향 연결리스트

 

 장단점 list와 동일, 성능적으로는 forward_list가 가벼워 좋음

 stack

 LIFO(Last In First Out) 선입후출 자료구조

 map

 이진탐색트리 기반, 자동정렬, key - value pair로 구성 

 장점 

 많은 양의 자료 유리, 검색 속도 빠름, key/value 따로 저장, 자동정렬

 단점 

 적은 양엔 오버헤드로 인해 오히려 손해

 set

 이진탐색트리 기반, 자동정렬, key만 저장 

 장점 

 많은 양의 자료에 유리, 검색 속도 빠름, key만 저장(key가 곧 value), 자동정렬

 단점 

 적은 양엔 오버헤드로 인해 오히려 손해 

 unordered_map 

정렬되지 않은 map 

 unordered_set 

정렬되지 않은 set 



반응형

댓글