20250106 / Unity_6차 18주차 월요일
튜플(Tuple)은 여러 개의 값을 하나의 데이터로 묶어서 반환하거나 전달할 때 사용하는 데이터 구조다.
C#에서 제공하는 튜플은 값형식(Value Type)으로,
다양한 데이터 타입의 값을 그룹으로 묶어 처리할 수 있다.
class MaxHeap<T1, T2> where T2 : IComparable<T2>
{
private readonly List<(T1 Data, T2 Value)> Heap = new();
public (T1 Data, T2 Value) Peek()
{
if (Count == 0)
throw new InvalidOperationException("Heap is empty.");
return heap[0];
}
public (T1 Data, T2 Value) Remove()
{
if (Count == 0)
throw new InvalidOperationException("Heap is empty.");
(T1, T2) root = heap[0];
heap[0] = heap[Count - 1];
heap.RemoveAt(Count - 1);
HeapifyDown(0);
return root;
}
}
// 사용 예
if (distance < maxHeap.Peek().Value)
{
freeExplorers.AddLast(maxHeap.Remove().Data); // 이전 최대값 복구
maxHeap.Add(explorer, distance);
nodesToRemove.Add(currentNode); // 삭제 예정
}
위와 같이 List 요소를 Pair 처럼 만들 수도 있고, 함수의 반환형을 복수로 묶어 내보낼 수 있다.