2012-02-20 20 views

答えて

1

インデックスでアイテムが必要な場合は、おそらくList<T>より適切なデータ構造ですか?

スタックは、最後に挿入したアイテムのみを取得できるようにしています。そこその動作を回避する方法がありますが、あなたはインデックスでのアイテムが必要な場合は、確かにこれはうまく機能:

var myList = new List<Int32>(); 
myList.Add(100); 
myList.Add(200); 
myList.Add(300); 
myList.Add(400); 
Console.Out.WriteLine(myList[2]); // Prints "300" 
+0

stack.getindex [0]またはその他の – user1220052

+0

という名前のメトはビルトインスタックにありません。これを行うには、配列またはリストに変換する必要があります。 'myStack.toArray()'やLINQ 'ToList()'拡張メソッドを実装する組み込みのメソッドがあります。 –

+0

kk mystack.to Array() – user1220052

4

あなたはこのためにElementAt()を使用することができます。

Stack<Int32> foo = new Stack<Int32>(); 
foo.Push(5); //element 1 
foo.Push(1); //element 0 
int val = foo.ElementAt(1); //This is 5 

スタックは、あなたがスタックに追加最初の項目を取得したい場合は、あなたが使用することができ、最初のうちに最後なので:

int val = foo.ElementAt(foo.Count - 1); 

ElementAtは、LINQの拡張メソッドである、覚えておいてくださいそのスタックを配列として列挙し、目的のインデックスを返します。大規模なスタックの場合、またはパフォーマンスが重要な場合は、List<T>などの別のデータ構造を使用することを検討してください。

+3

IEnumerableのLINQ拡張メソッドを利用しています。 OPはそれを実現するためにそこに行っている体操を意識させるべきです。 –

+0

thnkx uとてもMikeとても助かりました – user1220052

+0

@ChrisShain - うん、確かに有効なポイント.. –