[C#] Queue<T>, Queue, Stack<T>, Stack
Queue<T> 클래스
Queue<T> 클래스 (System.Collections.Generic)
개체의 선입선출(FIFO) 컬렉션을 나타냅니다.
learn.microsoft.com
- 선입선출(FIFO; first-in, first-out) 방식의 대기열(Queue) 자료구조를 나타내는 클래스
- 색인으로 특정 요소에 직접 접근할 수 없기에 IList<T> 와 IList를 구현하지 않음
* 임의 접근이 필요하면 ToArray 메서드를 통해 배열에 복사하여 사용
- 대기열은 내부적으로 배열로 구현됨
* 요소를 담을 공간이 부족해지면 대기열은 내부 배열을 더 큰 배열로 대체
* 삽입, 삭제 연산은 효율적(단 삽입으로 인해 크기가 변하지 않을 경우)
namespace System.Collections.Generic
{
public class Queue<T> : IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T>
{
public Queue();
public Queue(int capacity); // 기초 크기 설정, 자동 크기 변경이 덜 발생하도록
public Queue(IEnumerable<T> collection); // 기존 콜렉션을 통해서 생성
// 대기열 조회, 검색
public int Count { get; }
public T Peek();
public bool Contains(T item);
// 대기열 추가, 삭제
public void Enqueue(T item);
public T Dequeue();
public void Clear();
// 열거
public Enumerator GetEnumerator();
public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator
{
public T Current { get; }
public void Dispose();
public bool MoveNext();
}
// 배열 공간 최적화
public void TrimExcess();
// 배열로의 복사
public T[] ToArray();
public void CopyTo(T[] array, int arrayIndex);
}
}
Queue 클래스
Queue 클래스 (System.Collections)
개체의 선입선출(FIFO) 컬렉션을 나타냅니다.
learn.microsoft.com
- 책에는 내용이 없는데 제네릭 없던 시절의 큐 클래스인듯
- 역시 마찬가지로 동기화 관련 사항이 있고, 생성자에서 growFactor를 지정해 줄 수 있는 점이 특이점
Stack<T> 클래스
Stack<T> 클래스 (System.Collections.Generic)
지정한 동일 형식의 인스턴스로 이루어진 가변 크기 LIFO(후입선출) 방식의 컬렉션을 나타냅니다.
learn.microsoft.com
- 후입선출(LIFO; last-in, first-out) 방식의 스택 자료구조를 나타내는 클래스
- Queue<T>와 흡사하나 Enqueue 대신 Push가, Dequeue 대신 Pop(맨 앞이 아닌 맨 뒤에서 꺼냄) 메서드가 존재
Stack 클래스
Stack 클래스 (System.Collections)
제네릭이 아닌 개체의 간단한 LIFO(Last In First Out: 마지막에 들어간 것부터 사용) 컬렉션을 나타냅니다.
learn.microsoft.com
- Queue와 흡사하나 Enqueue 대신 Push가, Dequeue 대신 Pop(맨 앞이 아닌 맨 뒤에서 꺼냄) 메서드가 존재
- 역시 마찬가지로 동기화 관련 사항이 존재함