Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有更简单的方法可以使用C中的堆栈来使用这个整数数组?_C#_Arrays_Stack - Fatal编程技术网

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();