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 |