Stack<T>.CopyTo() मेथड स्टैक के तत्वों को एक-आयामी ऐरे में कॉपी करता है। तत्व टॉप से बॉटम के क्रम में कॉपी होते हैं (यानी, जो तत्व पहले Pop होगा, वह ऐरे के इंडेक्स 0 पर जाएगा)।
उदाहरण 1: सटीक आकार के ऐरे में कॉपी करना
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<int> stack = new Stack<int>();
// 10 से 100 तक पुश करें (100 टॉप पर होगा)
for (int i = 10; i <= 100; i += 10) {
stack.Push(i);
}
Console.WriteLine("स्टैक प्रदर्शित (टॉप से बॉटम)...");
foreach (int val in stack) {
Console.WriteLine(val);
}
// स्टैक आकार का ऐरे बनाएं
int[] intArr = new int[stack.Count];
// इंडेक्स 0 से कॉपी करें
stack.CopyTo(intArr, 0);
Console.WriteLine("\nऐरे प्रदर्शित (इंडेक्स 0 = स्टैक टॉप)...");
foreach (int val in intArr) {
Console.WriteLine(val);
}
}
}
आउटपुट
स्टैक प्रदर्शित (टॉप से बॉटम)...
100
90
80
70
60
50
40
30
20
10
ऐरे प्रदर्शित (इंडेक्स 0 = स्टैक टॉप)...
100
90
80
70
60
50
40
30
20
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("स्टैक प्रदर्शित (टॉप से बॉटम)...");
foreach (int val in stack) {
Console.WriteLine(val);
}
// 10 आकार का ऐरे, इंडेक्स 2 से कॉपी करें
int[] intArr = new int[10];
stack.CopyTo(intArr, 2);
Console.WriteLine("\nऐरे प्रदर्शित (इंडेक्स 2 से शुरू)...");
foreach (int val in intArr) {
Console.WriteLine(val);
}
}
}
आउटपुट
स्टैक प्रदर्शित (टॉप से बॉटम)...
50
40
30
20
10
ऐरे प्रदर्शित (इंडेक्स 2 से शुरू)...
0
0
50
40
30
20
10
0
0
0
महत्वपूर्ण व्यवहार
- कॉपी क्रम: टॉप-टू-बॉटम (LIFO क्रम) -
foreachइटरेशन के समान। - ऐरे इंडेक्स 0 को स्टैक का टॉप तत्व प्राप्त होता है।
- मूल स्टैक अपरिवर्तित रहता है - CopyTo केवल पढ़ता है।
- लक्ष्य ऐरे में पर्याप्त क्षमता होनी चाहिए:
index + stack.Count ≤ array.Length। - डिफ़ॉल्ट मान (0, null, false) अप्रयुक्त स्लॉट्स में रहते हैं।
उपयोग का मामला
स्टैक को ऐरे में कॉपी करना उपयोगी होता है जब आपको:
- स्टैक को संशोधित किए बिना तत्वों का विश्लेषण करना हो।
- स्टैक सामग्री को सीरियलाइज़/सेव करना हो।
- रैंडम एक्सेस द्वारा तत्वों को एक्सेस करना हो (स्टैक केवल टॉप एक्सेस देता है)।