[STL] 연관 컨테이너 본문

프로그래밍/C++

[STL] 연관 컨테이너

디유비 2020. 7. 18. 21:11
  • map & multimap  
    삽입 : O(logN) - 삽입을 위해 내부 트리를 탐색해야 해서 조금 느림  
                  - insert() 사용 시 힌트가 최적이라면 O(1)  
    색인 : O(logN) - 키 사용할 경우  
    정렬된 벡터에서 n이 크지 않다면 검색이 더 빠를 수 있음   
    삽입 삭제가 빈번하다면 벡터보다 맵이 우세    
  • set & multiset   
    삽입 : O(logN) - 삽입을 위해 내부 트리를 탐색해야 해서 조금 느림  
                  - insert() 사용 시 힌트가 최적이라면 O(1)  
    색인 : O(logN) - 키 사용할 경우   
    map과 동일한 자료구조를 사용하므로 성능의 특성이 맵과 동일  
  • unordered_map & unordered_multimap   
    삽입 : O(1) - O(n)  
    색인 : O(1) - O(n) - 키 사용할 경우  
    해시 테이블   
    생성에 많은 비용이 듦   
    검색 속도는 map, vector와 비교했을 때 월등함   
    but 메모리를 많이 차지한다  
       
  • unordered_set & unordered_multiset  

결론

C++ 03 까지는 vector가 최고다.
C++ 11 이후에서 효율적인 검색이 필요하다면 unordered_map 그 외는 vector
       만약 메모리가 적은 환경이라면 vector

'프로그래밍 > C++' 카테고리의 다른 글

[STL] 시퀀스 컨테이너  (0) 2020.07.17
[C++] malloc VS new  (0) 2020.07.11
Comments