리스트(list)


1. 저장할 데이터 개수가 가변적일때 사용한다.

2. 중간에 데이터 삽입이나 삭제가 자주 일어날때 사용한다.(리스트의 추가 삭제 용이성)

3. 저장할 데이터 개수가 많으면서 검색을 자주하면 다른 컨테이너를 쓴는 것이 좋다.

(map ,set, hash_map 사용이 좋다.)

4. 데이터에 랜덤접근하는 경우가 적을떄 사용한다.

(리스트는 순차 접근만 가능하기 때문에  저장된 위치를 알더라도 순차접근해야한다. 메모리 낭비)





백터(vector)


1. 저장할 개수가 가변적일때 사용한다. (데이터 추가 용이)

2. 중간에 데이터 삽입이나 삭제가 일어나지 않을때( 배열과 같기 때문에 중간 삽입,삭제는 리소스 낭비)

3. 저장할 데이터 개수가 적거나 많은 경우에는 빈번하게 검색하면 안된다. (데이터 순차 저장이므로 검색속도가 느리다.)

(검색에는 map, set, hash_map가 좋다.)

4. 데이터 랜덤접근이 용이하다.

(배열같은 특성이 있어 랜덤 접근이 가능하다, 위치를 알고있다면 검색도 필요 없고 빠르게 접근 가능!!)





덱(deque)


1. 데이터를 앞이나 뒤에서 삽입, 삭제를 한다면 STL 컨테이너 라이브러리 중에서 가장 성능이 좋다!!

2. 저장할 데이터 개수가 가변적일때 사용한다.

3. 검색을 거의 하지 않는다.

(검색은 역시 map, set, hasp_map을 사용하는것이 좋다!!!)

4. 데이터 랜점접근이 가능하다.( 백터와 같은 이유 )





해시 맵(hash_map)


1. 많은 자료(수천단위)를 저장하고, 검색 속도가 빨라야 할때 사용한다.( 자료가 많을때 검색이 빠르다)

2. 너무 빈번하게 자료를 삽입, 삭제를 할경우에는 사용하지 않는다. (추가나 삭제는 list, vector, deque이 더 빠르다)

3. 중복키 사용 불가





맵(map)


1. 많은 자료들을 정렬해야 할때 사용한다.

2. 많은 자료를 저장하고, 검색이 빨라야 할때 사용한다.

3. 번번하게 삽입, 삭제를 할경우에는 사용하지 않는다.

4. 해쉬맵과 다른점은 맵은 자동으로 정렬을 하기 때문에 정렬이 필요하지 않는 곳에서 맵을 사용하는것은 낭비이다.

5. 중복키 사용 불가





셋(set)


1. 맵과는 다르게 '키(Key)'만 저장한다.

2. 정렬해야 할 때 사용한다.

3. key가 있는지 없는지 알아야 할 때 사용한다.

4. 많은 자료를 저장하고, 검색 속도가 빨라야 할 때 사용한다.

5. 중복키 사용 불가


'C++ > STL' 카테고리의 다른 글

21. 동기화 객체1  (0) 2017.11.03
20. 스레드 (thread)  (0) 2017.10.31
19. chrono  (0) 2017.10.25
18. unordered_map  (0) 2017.10.24
17. forward_list  (0) 2017.10.23

+ Recent posts