STL - Map

이승덱·2021년 7월 21일

CPP

목록 보기
55/70
#include <iostream>

#include <vector>

#include <list>

#include <deque>

using namespace std;

// Map

class Player {

public:

 Player():_playerId(0) {

 }

 Player(int playerId):_playerId(playerId) {

 }

public:

 int _playerId; //플레이어를 구분

};

int main()

{

 // 연관 컨테이너(시퀀스 컨테이너와는 다르다)

 // 왜 Vector로만 프로그래밍을 하면 안되나여?

 // Vector를 이용하여 플레이어 관리를 해보자

 vector<Player*> v; //효율적인 동작을 위해 포인터로 선언

 // 10만명 입장

 for (int i = 0;i < 100000;i++) {

 Player* p = new Player(i);

 v.push_back(p);

 }

 // 5만명 퇴장

 for (int i = 0;i < 50000;i++) {

 int randIndex = rand() % v.size();

 Player* p = v[randIndex]; //플레이어 퇴장!

 delete p;

 v.erase(v.begin() + randIndex); //플레이어 벡터에서도 삭제!

 }

 // ex) N번 Id의 플레이어가 M번 Id의 플레이어를 공격하고 싶어요!

 // Q) 특정 ID를 가진 Player를 찾아주세요

 // A) 찾아보자 -> 루프를 돌며 한땀한땀 찾는 방법밖에 없다.

 bool found = false;

 // 굉장히 비 효율적

 for (int i = 0;i < v.size();i++) {

 if (v[i]->_playerId == 10000) {

 found = true;

 break;

 }

 }

 // 결론 -> Vector, List, Deque와 같은 선형 데이터구조는

 // 데이터를 줄지어 보관하여 편리한 장점이 있지만

 // 특정 데이터를 찾아내는 것은 효율적이지 않다는 단점도 함께한다.

 // -> 특정 데이터를 잘 찾기 위한 자료구조 == 연관 컨테이너

 return 0;

}
profile
공부 기록용 블로그입니다

0개의 댓글