상세 컨텐츠

본문 제목

[C++ STL] map

Study/Language

by Arq.Dev5igner 2022. 2. 25. 17:36

본문

STL이란 자료 구조와 알고리즘을 템플릿으로 제공하는 C++ 표준 라이브러리로써, Standard Template Library의 약자입니다.

 

STL의 주요 구성 요소는 컨테이너, 할당기, 반복자, 어댑터, 알고리즘, 함수 객체로 이뤄져 있으며, 컨테이너, 알고리즘, 반복자가 가장 중요한 세 요소입니다.

 

STL의 특징으로는 이름과 같이 일반화를 지원한다는 것과 광범위하게 이곳저곳에 두루두루 재사용 될 수 있다는 것입니다. 그 와중에도 (적재적소 사용시)효율은 떨어지지 않으며 표준이므로 이식성에도 좋고 다양한 자료구조와 알고리즘을 최적화하여 사용자가 쓰기 좋게 만들어 놓았으며 해당 알고리즘이 내부적으로 어떻게 동작하는지 몰라도 사용할 수 있는 특징들이 있습니다.

 

STL의 단점으로는 템플릿에 기반 하기 때문에 타입마다 함수와 클래스가  매번 구체화 되어 코드가 비대해 지며 템플릿 클래스의 타입명이 길어 재빠른 의미 파악이 힘듭니다.

 

STL을 사용하는 이유는 특징에도 적혀 있듯이 이곳저곳 광범위하게 재사용이 가능하며 검증된 코드의 사용으로 시간을 절약할 수 있고 목적에 맞게 잘만 사용한다면 효율도 좋기 때문입니다.

 

 

 

 

 

 

 

※ std::map 요약
연관 컨테이너 std::map에 대한 설명이다.
std::map은 key와 value의 쌍을 원소로 저장(pair 객체로 저장)하며, set처럼 원소의 key는 중복될 수 없다.
중복 key를 저장해야 한다면 std::multimap을 사용하여야 한다.
연관 컨테이너는 어떠한 key와 짝을 이루어 자료를 보관하는데, 자료를 넣거나 빼거나 찾을 때는 key를 이용하여야 한다.
 
※ std::map 특징
- std::map은 레드-블랙 트리(Red-Black Tree) 자료구조이다.
- std::map의 key는 중복될 수 없다. 중복 저장해야 한다면 std::multimap을 사용한다.
- 데이터 삽입과 동시에 정렬이 일어난다.
- 정렬은 key를 기준으로 정렬되며 기본 정렬 기준은 less(오름차순) 정렬이다.
- 검색 또한 key를 기준으로 검색(이분검색)한다.
- std::map의 원소는 std::pair 객체로 저장된다.
- 저장할 자료가 적을때는 메모리 낭비와 검색시 오버헤드가 생겨 대포로 파리 잡는 격이다.
 
※ std::map을 사용해야 하는 경우
- 삽입과 동시에 정렬해야 할때
- 많은 데이터를 보관해야 하고, 동시에 검색이 빨라야 할때
- 데이터 삽입, 삭제가 적을때

 

'Study > Language' 카테고리의 다른 글

[C++ STL] list 개요  (0) 2022.02.25
[C++ STL] deque  (0) 2022.02.25
[C++ STL] std::vector 주요 멤버 함수 목록  (0) 2022.02.25
[C#] Collection과 Interface  (0) 2021.11.15
[C#] 열거자 (Enumerator) / Collection과 인덱서(indexer)  (0) 2021.11.15

관련글 더보기