Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티C#

유니티 C#) Queue의 정의, 특징, 활용 (큐)

UniCoti(유니코티) 2023. 1. 18.

유니티를 시작한 지 

오늘 딱 601일 차이지만,

그동안 무얼 한 건지

Queue(큐)는 처음 보게 되었다.

 

먼저 Queue(큐) 란 배열, 리스트 같이

한 데이터를 저장하는 장소라고 생각하면 된다.

 

하지만 다른 점은,

선입선출, 좀 더 전문적으로 말하면

FIFO가 기본 시스템이다.

 

FIFO가 뭘까?

FIFOFirst - In, First - Out의 약자로,

먼저 들어온 것이 먼저 나간다는 말이다.


이번 글은 FIFO를 그림으로 표현해 보고,

코드로 표현해 본 후,

포스팅을 마치겠다.

FIFO시스템 그림.

 

그림을 보면 알다시피, 첫 번째로 들어간 물건은,

가장 첫 번째로 나오게 되고,

 

두 번째로 들어간 물건은

두 번째로 나오게 되는 간단한 형태이다.


이걸 코드로 표현해 보겠다.

 

Queue<String> Objects;

void Awake() {
	Objects = new Queue<String>(); //초기화.
}

void AddQueue(string Index) { //Queue저장.
	Objects.Enqueue(Index); //오브젝트에 문자열 Index를 저장.
}

void UseQueue() { //Queue사용
	Objects.Dequeue(); //오브젝트 중 첫번째 오브젝트 사용.
}

주석으로도 보이겠지만 다시 설명하자면

 

AddQueue라는 함수원하는 이름의

문자열을 Objects라는 이름의 Queue(큐)넣어준다.

 

UseQueueQueue(큐)를 사용하는 함수이다.

 

하지만 특이한 점이 있다.

UseQueue는 사용을 하는 함수인데,

아무것도 전달받지 않는다.

 

이유가 무엇일까? 그 이유는

Queue(큐)에서는 무조건 첫 번째 오브젝트가 첫 번째로 나가기 때문에

배열이나 리스트처럼 우리가 원하는 오브젝트를 나가게 할 수 없기 때문이다.


앞선 그림을 코드로 표현해 보겠다.

AddQueue("First");
AddQueue("Second");
AddQueue("Third");
AddQueue("Fourth");
AddQueue("Fifth");
AddQueue("Sixth");
AddQueue("Seventh");
AddQueue("Eighth"); //앞선 그림의 물체들 생성.

UseQueue(); //첫번째로 들어온 오브젝트(이 코드에선 "First")사용.

이렇게 표현할 수 있겠다.

 

사실상 이걸 쓸 바에 배열을 쓰는 게 나아 보이는데,

사실 나(필자)도 그렇게 생각한다.

하지만 장단점은 누구에게나 있는 법.

 

Queue(큐)의 장점은 간단한 정보 관리에 있다고 한다.

순서가 상관없는 정보의 저장이나 이 저장기법과

만들고 싶은 바가 운명적으로 일치할 때 정도에 쓰면 되겠다.


이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글