반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

[C++ STL] map 사용법

[C++ STL] map 기본적인 사용법 [C++ STL]에서 연관 컨테이너 중 하나인 map에 대해서 기본적인 사용법을 알아보도록 하겠습니다. map의 자료구조는 트리로 구성되어 있습니다. 정확히 말하면 레드 블랙

kbj96.tistory.com

 

[C++][STL] map 사용법 정리

인트로 안녕하세요. 오늘은 C++ STL 연관 컨테이너 중 하나인 map에 대해 알려드리겠습니다. 목차 1) Map이란? 2) Map 기본 형태 3) Map 정렬 4) Map 사용방법 - 헤더 포함 - map 선언 - search : map에서 데이터..

life-with-coding.tistory.com

 

[C++] map vs hash_map(unordered_map)

개요 hash_map은 비표준 Container인데 반해(stdext namespace에 포함) unordered_map은 C++11에서 STL 표준 Container로 추가되었으며, (사실 TR1부터 추가되었지만 C++11에서 좀 더 최적화가 이루어졌다고 합..

gracefulprograming.tistory.com

 

[C++] std::map을 value 기준으로 정렬하기 - doodoo's coding

I really love solving computer problem. I wanna grow today more than yesterday.

0xd00d00.github.io

 

1. map

1-1. map

map은 key, value 쌍의 데이터를 저장한다.

Red-Black Tree로 설계되어있고, set과 유사하지만 key와 그에 따른 값을 보유하고 있다는 점이 set과 다르다.

map은 아래처럼 사용하면 된다!

1
2
3
4
5
6
#include <map>
 
map<intint> M;    // 기본( 큰 값 기준 정렬)
 
map<intint, less<int> > M;        // 큰 값 기준 정렬
map<intint, greater<int> > M;        // 작은 값 
cs

정렬의 기준은 기본적으로 key값을 기준으로 정렬되고, value값을 기준으로 정렬하려면 사용자 정의를 해줘야 한다.

 

1-2. unordered_map

이전의 게시물인 set 게시물을 보고 왔으면 아마 이해가 빠를 것이다.

쉽게 얘기하자면 unordered_map은 다른 언어에서의 Hashmap이다.

정렬되어 있지 않고, Hash함수를 통해 key에 해당하는 값을 조회한다.

 

2. 멤버함수

map의 멤버함수에 대한 자세한 설명은 아래 링크에서 확인할 수 있다.

 

std::map - cppreference.com

(1) (2) (since C++17) std::map is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usual

en.cppreference.com

이 게시물에서는 내가 자주 사용할 것 같은 기능들만 정리했다.

함수 설명
iterator begin(); map이 시작 위치 주소 값 반환
iterator end(); map이 끝나는 위치 주소 + 1값 반환
int size(); map의 사이즈를 반환
bool empty(); map이 비어있는지 확인
pair<iterator, bool> insert(T); map에 T를 삽입.
반환값으로 pair의 iterator에는 저장 위치, bool 에는 저장 성공실패 여부를 반환한다.
void erase(iterator position); map의 position에 해당하는 값 삭제
void clear(); map의 모든 원소 제거
iterator find(key); map에 key가 있는지 확인.
반환값으로 iterator, 즉, key의 위치를 반환한다.
int count(key); map에 key가 있는지 확인.
반환값으로 int를 반환하는데, map의 key는 중복을 허용하지 않으므로 0 또는 1 반환.
iterator lower_bound(key); map에 key가 처음 등장하는 위치 반환.
중복 허용X 이므로 원소의 위치!
iterator upper_bound(key); map에 key가 마지막 등장하는 위치 + 1 반환.
중복 허용X 이므로 원소의 위치 다음 위치!
T at(key); map의 key값에 해당하는 value를 반환한다.
유효성 검사 O
operator [key]; map의 key값에 해당하는 value를 반환한다.
유효성 검사 X

 

3. map에서의 반복문

map에서 저장된 모든 데이터를 사용해야 할 때, 반복문을 사용하는데 아래처럼 사용하면 된다.

1
2
3
forauto item : M){
    cout << item.first << " " << item.second << endl;
}
cs

 

반응형

'Legacy' 카테고리의 다른 글

[Java#2] String, StringBuilder  (0) 2022.04.29
[Java#1] 입출력  (0) 2022.04.29
[C++#5-4] set  (0) 2022.04.18
[C++#5-3] queue  (0) 2022.04.18
[C++#5-2] stack  (0) 2022.04.18

+ Recent posts