[C/C++ STL] STL 컨테이너들의 적절한 사용법 정리

jh.cin·2021년 4월 17일
1

리스트(list)

  1. 저장할 데이터 개수가 가변적일때 사용함.
  2. 중간에 데이터 삽입이나 삭제가 자주 일어날때 사용함.(리스트의 추가 삭제 용이성)
  3. 저장할 데이터 개수가 많으면서 검색을 자주하면 다른 컨테이너를 쓰는 것이 좋음.(map ,set, unordered_map 사용이 좋음)
  4. 데이터에 랜덤접근하는 경우가 적을떄 사용함.
    (리스트는 순차 접근만 가능하기 때문에 저장된 위치를 알더라도 순차접근함. 메모리 낭비)

벡터(vector)

  1. 저장할 개수가 가변적일때 사용함.(데이터 추가 용이)
  2. 중간에 데이터 삽입이나 삭제가 일어나지 않을때(배열과 같기 때문에 중간 삽입,삭제는 리소스 낭비)
  3. 저장할 데이터 개수가 적거나 많은 경우에는 빈번하게 검색하는 것은 지양.(데이터 순차 저장이므로 검색속도가 느림. 검색에는 map, set, hash_map을 사용하는것이 좋음)
  4. 데이터 랜덤접근이 용이함
    (배열같은 특성이 있어 랜덤 접근이 가능함, 위치를 알고있다면 검색도 필요 없고 빠르게 접근 가능)

해시맵(unordered_map)

  1. 많은 자료(수천단위)를 저장하고, 검색 속도가 빨라야 할때 사용함.(자료가 많을때 검색이 빠르다)
  2. 너무 빈번하게 자료를 삽입, 삭제를 할경우에 사용은 지양.(추가나 삭제는 list, vector, deque이 더 빠름)
  3. 중복키 사용 불가

맵(map)

  1. 많은 자료들을 정렬해야 할때 사용함
  2. 많은 자료를 저장하고, 검색이 빨라야 할때 사용함
  3. 해쉬맵과 다른점은 맵은 자동으로 정렬을 하기 때문에 정렬이 필요하지 않는 곳에서 맵을 사용하는것은 지양.
  4. 중복키 사용 불가.

셋(set)

  1. 맵과는 다르게 '키(Key)'만 저장함
  2. 정렬해야 할 때 사용함
  3. key가 있는지 없는지 알아야 할 때 사용함.
  4. 많은 자료를 저장하고, 검색 속도가 빨라야 할 때 사용함.
  5. 중복키 사용 불가

덱(deque)

  1. 데이터를 앞이나 뒤에서 삽입, 삭제를 한다면 STL 컨테이너 라이브러리 중에서 가장 성능이 좋음.
  2. 저장할 데이터 개수가 가변적일때 사용함.
  3. 검색을 거의 하지 않는다.(검색은 map, set, hasp_map을 사용하는것이 좋음)
  4. 데이터 랜점접근이 가능하다.(백터와 같은 이유)
profile
그냥 프로그래머

0개의 댓글