Copying the Queue elements to 1D Array in C# (original) (raw)

Last Updated : 28 Jan, 2019

Queue.CopyTo(T[], Int32) Method is used to copy the Queue elements to an existing one-dimensional Array, starting at the specified array index. The elements are copied to the Array in the same order in which the enumerator iterates through the Queue and this method is an O(n) operation, where n is Count. This method comes under System.Collections.Generic namespace.Syntax:

public void CopyTo (T[] array, int arrayIndex);

Parameters:

array: It is the one-dimensional Array which is the destination of the elements copied from Queue. The Array must have zero-based indexing.arrayIndex: It is the zero-based index in array at which copying begins.

Exceptions:

Below programs illustrate the use of the above-discussed method:Example 1:

csharp `

// C# code to illustrate the // Queue.CopyTo(T[], Int32) // Method using System; using System.Collections.Generic;

class GFG {

// Driver code
public static void Main()
{

    // Creating an Queue of String
    Queue<string> myq = new Queue<string>();

    // Adding elements to Queue
    myq.Enqueue("A");
    myq.Enqueue("B");
    myq.Enqueue("C");
    myq.Enqueue("D");

    // Creates and initializes the
    // one-dimensional target Array.
    String[] arr = new String[6];

    // adding elements to Array
    arr[0] = "HTML";
    arr[1] = "PHP";
    arr[2] = "Java";
    arr[3] = "Python";
    arr[4] = "C#";
    arr[5] = "OS";

    Console.WriteLine("Before Method: ");

    Console.WriteLine("\nQueue Contains: ");

    // Displaying the elements in myq
    foreach(Object obj in myq)
    {
        Console.WriteLine(obj);
    }

    Console.WriteLine("\nArray Contains: ");

    // Displaying the elements in arr
    for (int i = 0; i < arr.Length; i++) 
    {
        Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
    }

    Console.WriteLine("After Method: ");

    // Copying the entire source Queue
    // to the target Array starting at
    // index 2.
    myq.CopyTo(arr, 2);

    Console.WriteLine("\nQueue Contains: ");

    // Displaying the elements in myq
    foreach(Object obj in myq)
    {
        Console.WriteLine(obj);
    }

    Console.WriteLine("\nArray Contains: ");

    // Displaying the elements in arr
    for (int i = 0; i < arr.Length; i++) 
    {
        Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
    }
}

}

`

Output:

Before Method:

Queue Contains: A B C D

Array Contains: arr[0] : HTML arr[1] : PHP arr[2] : Java arr[3] : Python arr[4] : C# arr[5] : OS After Method:

Queue Contains: A B C D

Array Contains: arr[0] : HTML arr[1] : PHP arr[2] : A arr[3] : B arr[4] : C arr[5] : D

Example 2:

csharp `

// C# code to illustrate the // Queue.CopyTo(T[], Int32) // Method using System; using System.Collections.Generic;

class GFG {

// Driver code
public static void Main()
{

    // Creating an Queue of String
    Queue<string> myq = new Queue<string>();

    // Adding elements to Queue
    myq.Enqueue("GFG");
    myq.Enqueue("Geeks");
    myq.Enqueue("Sudo");
    myq.Enqueue("DSA");

    // Creates and initializes the
    // one-dimensional target Array.
    String[] arr = new String[2];

    // adding elements to Array
    arr[0] = "HTML";
    arr[1] = "PHP";
    arr[2] = "Java";
    arr[3] = "Python";
    arr[4] = "C#";
    arr[5] = "OS";

    Console.WriteLine("Before Method: ");

    Console.WriteLine("\nQueue Contains: ");

    // Displaying the elements in myq
    foreach(Object obj in myq)
    {
        Console.WriteLine(obj);
    }

    Console.WriteLine("\nArray Contains: ");

    // Displaying the elements in arr
    for (int i = 0; i < arr.Length; i++) {
        Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
    }

    Console.WriteLine("After Method: ");

    // using Method but It will give
    // Runtime Error as number of elements
    // in the source Queue is greater
    // than the number of elements that
    // the destination array can contain
    myq.CopyTo(arr, 2);

    Console.WriteLine("\nQueue Contains: ");

    // Displaying the elements in myq
    foreach(Object obj in myq)
    {
        Console.WriteLine(obj);
    }

    Console.WriteLine("\nArray Contains: ");

    // Displaying the elements in arr
    for (int i = 0; i < arr.Length; i++) {
        Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
    }
}

}

`

Runtime Error:

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.

Reference:

Similar Reads