#include <iostream>
using namespace std;
#include <map>
// map
class Player // 플레이어 클래스
{
public:
Player() : _playerId(0) {}
Player(int playerId) : _playerId(playerId) {}
public:
int _playerId;
};
int main()
{
// 연관 컨테이너
// map : 균형 이진 트리 (AVL)
// - 노드 기반
class Node
{
public:
Node* _left;
Node* _right;
// DATA
pair<int, Player*> _data; // 키값과 벨류를 한번에 들고있는다
//int _key;
//Player* _value;
};
srand(static_cast<unsigned int>(time(nullptr))); // 랜덤 시드 값
// (Key, Value)
map<int, int> m;
// 10만명
for (int i = 0; i < 100000; i++)
{
m.insert(pair<int, int>(i, i * 100)); // 값을 넣을 때는 페어를 이용해 키와 벨류를 한번에 넣기
}
// 5만명 퇴장
for (int i = 0; i < 50000; i++)
{
int randomValue = rand() % 50000;
// Erase By Key
m.erase(randomValue); // 삭제를 할 때는 키 값만 이용해서 삭제
}
// id가 1만 player를 빠르게 찾을 수 있다.
map<int, int>::iterator findIt = m.find(100000); // 반복자를 이용해 find함수로 키값을 이용해 찾기
if (findIt != m.end()) // 랜덤하게 5만명이 빠졌으므로 찾을 수도 있고 못찾을 수도 있음, find는 키를 끝까지 확인해서 end()까지 감
{
cout << "Find!" << endl;
}
else
{
cout << "Can't find.." << endl;
}
return 0;
}