C# 有没有更简单的方法可以使用C中的堆栈来使用这个整数数组?
我有一个整数数组,我想把整个数组推到一个堆栈中,例如,我有一个由C# 有没有更简单的方法可以使用C中的堆栈来使用这个整数数组?,c#,arrays,stack,C#,Arrays,Stack,我有一个整数数组,我想把整个数组推到一个堆栈中,例如,我有一个由 int[] myArrayInt = new int[10]; Stack<int> myStack = new Stack<int>(); for(int i=0;i<10;i++){ myArrayInt[i]=i; } myStack.Push(myArrayInt); 但我希望我的堆栈看起来像这样 --------------- 0123456789
int[] myArrayInt = new int[10];
Stack<int> myStack = new Stack<int>();
for(int i=0;i<10;i++){
myArrayInt[i]=i;
}
myStack.Push(myArrayInt);
但我希望我的堆栈看起来像这样
---------------
0123456789 bottom of stack
---------------
而不是
9876543210 bottom of stack
---------------
我知道我可以使用for循环将数组的所有整数推入堆栈,然后在我从堆栈弹出并设置for循环时使用另一个for循环,以便整数以相同的顺序返回数组,但我想知道是否有其他方法可以避免使用for循环,只需调用一次pop堆栈的函数我把所有的整数放回数组
我正在学习深度优先搜索算法,并使用堆栈跟踪我的程序所处的当前状态。以下是我将如何处理此问题的方法:
// Eliminate the for-loop to create your integer array
var intArray = Enumerable.Range(0, 9);
// The constructor to Stack<T> takes an IEnumerable<T>
var myStack = new Stack<int>(intArray);
... perform Stack operations
// To produce a T[] from what remains in the Stack<T>
var outIntArray = myStack.ToArray();
现在,因为您没有解释使用堆栈的目的,所以这里似乎完全没有必要。您可以简单地用var outinarray=Enumerable.Range0,9替换所有这些;正如穆塞凡在评论中指出的那样。没有需要IEnumerable的超负荷推送,但是有一个。您可以在数组中使用.Reverse,并将结果传递到构造函数中,以使堆栈看起来像0123456789,对于后者,您可以使用see OP said easy。。。like:var-tarray=Enumerable.range 0,9;把那些没用的废话都删掉,这些废话根本就不能成为一个明智的选择question@musefan:我假设OP在使用堆栈做某事,但是当你这样说的时候。。。我使用深度优先搜索算法,我使用堆栈跟踪程序当前的状态
// Eliminate the for-loop to create your integer array
var intArray = Enumerable.Range(0, 9);
// The constructor to Stack<T> takes an IEnumerable<T>
var myStack = new Stack<int>(intArray);
... perform Stack operations
// To produce a T[] from what remains in the Stack<T>
var outIntArray = myStack.ToArray();
var myInts = new { 0, 1, 2, /*etc*/ };
var stack = new Stack<int>(myInts.Reverse());
var outInts = stack.ToArray();