C#에서 Queue<T>.CopyTo(T[], Int32) 메서드는 큐(Queue)에 저장된 모든 요소를 지정한 인덱스 위치부터 시작해 기존의 1차원 배열로 복사할 때 사용됩니다. 이 메서드는 두 개의 매개변수를 받습니다. 첫 번째는 요소를 복사받을 대상 1차원 배열이고, 두 번째는 복사가 시작되는 배열의 인덱스(0부터 시작)입니다. 복사가 진행되면 해당 인덱스 이후의 기존 값들은 큐의 요소로 덮어써지므로, 배열에 필요한 만큼의 여유 공간을 미리 확보해 두어야 합니다.
예제
아래 예제를 통해 CopyTo 메서드의 실제 동작을 살펴보겠습니다.
using System;
using System.Collections.Generic;
public class Demo{
public static void Main(){
Queue<string> queue = new Queue<string>();
queue.Enqueue("K");
queue.Enqueue("T");
String[] strArr = new String[4];
strArr[0] = "One";
strArr[1] = "Two";
strArr[2] = "Three";
strArr[3] = "Four";
Console.WriteLine("\nArray elements: ");
for (int i = 0; i < strArr.Length; i++){
Console.WriteLine(strArr[i]);
}
queue.CopyTo(strArr, 2);
Console.WriteLine("\nAfter copying array contains: ");
for (int i = 0; i < strArr.Length; i++){
Console.WriteLine("arr[{0}] : {1}", i, strArr[i]);
}
}
}
출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
One Two Three Four After copying array contains: arr[0] : One arr[1] : Two arr[2] : K arr[3] : T
결과 분석
처음 strArr 배열에는 'One', 'Two', 'Three', 'Four'라는 네 개의 문자열이 저장되어 있었습니다. 이후 queue.CopyTo(strArr, 2)를 호출하면 인덱스 2부터 큐의 요소가 순서대로 복사됩니다. 따라서 arr[0]과 arr[1]의 값은 그대로 유지되고, arr[2]와 arr[3]은 각각 큐의 첫 번째 요소인 'K'와 두 번째 요소인 'T'로 덮어써집니다. 이처럼 CopyTo 메서드를 활용하면 큐 전체를 반복문 없이도 한 번의 호출로 기존 배열에 손쉽게 병합할 수 있습니다.