🙇‍♀️map


🪐map

#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;
}

태그:

카테고리:

업데이트: