array

- 저장할 개수가 고정적일때 사용

- 적은양의 자료에 유리

- 크기 변경 불가



vector

- 기본적으로 사용되는 컨테이너

- 저장할 개수가 가변적일때 사용

- 적은양의 자료에 유리

- 크기 변경 가능

- 순차 접근 가능

- 랜덤 엑세스 용이 ([idx]로 접근가능)

- 중간 삽입/삭제 느림

- 검색이 느림

- 많은양의 자료에 불리



deque

- 데이터를 앞뒤에서 삽입, 삭제 가능

- 저장할 개수가 가변적일때 사용

- 검색이 느림

- 랜덤 엑세스 용이

- 저장 데이터가 많고 메모리 할당량이 큰경우 vector에 비해 확장비용이 절감

- 중간 삽입/삭제 느림

- 삭제시 메모리 사용량이 줄어든다

- 앞뒤에 자주 삽입 / 삭제가 일어날 경우 사용



list

- 이중 연결 리스트

- 저장할 개수가 가변적일때 사용

- 이동 / 삭제 / 삽입이 빠름 (최대장점)

- 중간 삽입 / 삭제 용이

- 검색이 느림

- 랜덤 엑세스에 불리

- 순차 엑세스만 가능

- 적은양의 데이터에 유리



forward_list

- 기존의 list 컨테이너 설계에 맞춘다

- 단방향 연결 리스트

- 각 데이터는 다음 데이터를 가리키는 포인터 하나만 가지고있다

- list에 비해 메모리를 적게 사용

- list보다 삽입 / 삭제 속도가 빠르지만 차이는 크지않다

- 다른 컨테이너에서 지원하는 일부 기능이 없다

- 기능적으로는 list가 좋지만 성능면에서는 list가 좋다

- 단방향 만으로 충분할때 사용



map

- 많은 데이터를 정렬할때 사용

- 늘 정렬된 상태로 유지되는 컨테이너

- 많은 자료를 저장하고 검색이 빨라야할때 사용

- 적은양에는 오버헤드로 인해 손해

- 빈번하게 삽입 / 삭제 할때는 불리
- 중복키 사용 불가

- 정렬이 필요하지 않은곳에서 사용할때는 불리

- find() 알고리즘이 아닌 find() 멤버함수를 사용해야한다

- 삽입시 insert()를 애용할것

- 연관 배열이 필요할경우 사용

- 중복키를 허용할때는 multimap을 사용한다

- 정렬되지 않은 map을 사용할때는 unorderd_map을 사용한다



set

- map과 다르게 key만 저장

- 많은 데이터를 정렬할때 사용

- key가 있는지 없는지 알아야 할때 사용

- 많은 데이터를 저장하고 검색이 빨라야할때 사용

- 중복키 사용 불가

- 늘 정렬된 상태로 유지되는 컨테이너

- 적은양에는 오버헤드로 인해 손해

- 검색이 자주 발생될경우 사용

- 중복키를 허용할때는 multiset을 사용한다

- 정렬되지 않은 set을 사용할때는 unorderd_set을 사용한다



hash_map

- 많은 데이터를 저장할때 유리

- 검색속도가 빠름

- 빈번한 삽입 / 삭제에 불리

- 중복키 사용 불가

- map 과 set보다 검색속도가 빠름(최대장점)

- 적은 데이터를 저장하고 검색할때는 list나 vector가 빠를수 있음


'C&C++' 카테고리의 다른 글

Incremental Linking  (0) 2019.07.10
WINAPI VirtualAlloc and VirtualAllocEx Difference  (0) 2019.07.09
Modern C++  (1) 2018.10.02
WINAPI How To Load Windows Tray Icon  (0) 2018.09.08
How To Use Json In C++(jsoncpp)  (0) 2018.09.08

+ Recent posts