본문 바로가기
C#

[C#] Queue<T>, Queue, Stack<T>, Stack

by DANEW 2023. 9. 12.

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(맨 앞이 아닌 맨 뒤에서 꺼냄) 메서드가 존재

- 역시 마찬가지로 동기화 관련 사항이 존재함

반응형

'C#' 카테고리의 다른 글

[C#] Dictionary<TKey,TValue>, Hashtable  (0) 2023.09.22
[C#] IDictionary<TKey,TValue>, IReadOnlyDictionary<TKey,TValue>, IDictionary  (0) 2023.09.20
[C#] HashSet<T>, SortedSet<T>  (0) 2023.09.16
[C#] BitArray  (0) 2023.09.14
[C#] LinkedList<T>, LinkedListNode<T>  (0) 2023.09.10
[C#] IList<T>, IList  (0) 2023.09.08
[C#] ICollection<T>, ICollection  (1) 2023.08.31
[C#] AppContext  (1) 2023.08.30