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