- map
- 각 노드가 key와 value 쌍으로 이루어진 트리, 중복 허용X
- first(key), second(value)가 있는 pair 객체로 저장
- 검색, 삽입, 삭제가 레드블랙트리로 구성
1. Player Class Create
#include "pch.h"
#include <map>
#include <unordered_map>
class Player
{
public:
Player() : id(0) {}
Player(int id) : id(id) {}
~Player() {}
int GetId() { return id; }
private:
int id = 0;
};
2. map Create
- make_pair 함수 사용해 pair 객체로 저장 후 insert
int main()
{
vector<Player*> player;
for (int i = 0; i < 4; i++)
player.push_back(new Player(i + 1));
map<int, Player*> playerMap;
for (auto* p : player)
playerMap.insert(make_pair(p->GetId(), p));
}
3. 값 찾기
- STL(Find)
- key(first), value(second)
int main()
{
auto it = playerMap.find(1);
int key = it->first;
Player* value = it->second;
}
- hash map(unordered map)
- map보다 더 빠른 탐색을 하기 위한 자료구조
- 해쉬테이블로 구현한 자료구조
- 중복된 데이터를 허용X, 데이터가 많을 시 좋은 성능을 가짐
- key가 유사한 데이터가 많을 시 해시 충돌 발생 - 성능 하락
int main()
{
// 메모리를 버리고 성능 선택
unordered_map<int, int> hashMap;
for (int i = 0; i < 4; i++)
hashMap.insert(make_pair(i + 1, i * i));
hashMap[1000] = 10000;
auto it = hashMap.find(1);
(it != hashMap.end()) ? cout << "1" << endl : cout << "0" << endl;
int key = it->first;
int value = it->second;
}
'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글
[C++] 13 - 기초 문법 공부 일지(Sort) (1) | 2022.12.08 |
---|---|
[C++] 12 - 기초 문법 공부 일지(STL) (0) | 2022.12.06 |
[C++] 10 - 기초 문법 공부 일지(Tree) (0) | 2022.12.05 |
[C++] 9 - 기초 문법 공부 일지(Graph) (2) | 2022.12.03 |
[C++] 8 - 기초 문법 공부 일지(Stack) (0) | 2022.12.02 |