Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การคัดลอก Stack ไปยังอาร์เรย์ใน C#

ภาพรวม

Stack<T>.CopyTo(T[] array, int index) คัดลอกข้อมูลจาก Stack ไปยังอาร์เรย์ โดยลำดับจะเป็นจากบนสุด (top) ไปด้านล่าง

ตัวอย่างที่ 1: คัดลอก Stack 10 สมาชิกไปอาร์เรย์ขนาด 10 เริ่มดัชนี 0

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Stack<int> stack = new Stack<int>();
        stack.Push(10);
        stack.Push(20);
        stack.Push(30);
        stack.Push(40);
        stack.Push(50);
        stack.Push(60);
        stack.Push(70);
        stack.Push(80);
        stack.Push(90);
        stack.Push(100);

        Console.WriteLine("Displaying the stack...");
        foreach (int val in stack)
        {
            Console.WriteLine(val);
        }

        int[] intArr = new int[stack.Count];
        stack.CopyTo(intArr, 0);

        Console.WriteLine("Displaying the array...");
        foreach (int val in intArr)
        {
            Console.WriteLine(val);
        }
    }
}

ผลลัพธ์

Displaying the stack...
100
90
80
70
60
50
40
30
20
10
Displaying the array...
100
90
80
70
60
50
40
30
20
10

ตัวอย่างที่ 2: คัดลอก Stack 5 สมาชิกไปอาร์เรย์ขนาด 10 เริ่มดัชนี 2

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Stack<int> stack = new Stack<int>();
        stack.Push(10);
        stack.Push(20);
        stack.Push(30);
        stack.Push(40);
        stack.Push(50);

        Console.WriteLine("Displaying the stack...");
        foreach (int val in stack)
        {
            Console.WriteLine(val);
        }

        int[] intArr = new int[10];
        stack.CopyTo(intArr, 2);

        Console.WriteLine("Displaying the array...");
        foreach (int val in intArr)
        {
            Console.WriteLine(val);
        }
    }
}

ผลลัพธ์

Displaying the stack...
50
40
30
20
10
Displaying the array...
0
0
50
40
30
20
10
0
0
0

สรุป

  • ลำดับในอาร์เรย์จะตรงกับลำดับการวนลูป Stack (top ก่อน)
  • อาร์เรย์ปลายทางต้องมีขนาด >= Count + index
  • ช่องว่างจะเป็นค่า default (0 สำหรับ int)