[C#] Queue

C# 에서는 Queue 를 제공합니다.

using System.Collections.Generic;

Queue<Int32> m_Queue = new Queue<Int32>;
m_Queue.Enqueue(oItem); // 큐에 넣기
item = m_Queue.Dequeue(); // 큐에서 빼기

Queue는 내부적으로 head와 tail 포인터를 가지고 있는데, tail에 데이타를 추가하고(Enqueue) head에서 데이타를 읽고 제거(Dequeue)합니다.

만약 데이타 양이 많아 순환 배열이 모두 찰 경우, Queue는 Capacity를 2배로  증가시키고 Queue를 확장합니다.

따라서 Queue는 기본적으로 무한대로 증식이 가능합니다.

그래서 필요에 따라 Queue 배열을 지정하고 싶을때는 Queue를 상속 받아서

별도의 클래스를 만들어 주면 되겠습니다.

public class MyQueue<T>
   {
       Queue<T> m_Queue = new Queue<T>();
       public Queue<T> oQueue
       {
           get { return m_Queue; }
           set { m_Queue = value; }
       }

       int iFixedCount = 100; // 100로 고정
       T iLastValue;
       public MyQueue(int _count)
       {
           iFixedCount = _count;
       }
       public Int32 Count
       {
           get { return m_Queue.Count; }
       }
       public void Enqueue(T oItem)
       {
           iLastValue = oItem;
           m_Queue.Enqueue(oItem);
           if (m_Queue.Count > iFixedCount)
               m_Queue.Dequeue();
       }
       public T LastValue
       {
           get { return iLastValue; }
       }
   }

 

Post Author: 김 키티

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다