이 게시물은 다음 링크를 참조하여 학습했습니다.
[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<int, int> M; // 기본( 큰 값 기준 정렬)
map<int, int, less<int> > M; // 큰 값 기준 정렬
map<int, int, 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
|
for( auto 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 |