2011-11-10 4 views
9

私はSystem.Collections.Stackについて知っています。私はPushFront()をサポートするクラスを探しています& PushBack()。.netには両面スタッククラスがありますか?

+0

もしコレクションの名前空間にそれがあったら、私は確信しています。 – ChaosPandion

+0

* Stack *を呼び出すのは、プッシュバックをサポートしている場合は1ではありません。 –

答えて

11

なぜ/ラップを使用しないのですかLinkedList<T>?それはAddFirstAddLastの方法を持っています。それを包んでAddBeforeなどのメソッドを隠すことができます。

一般的な用語はdeque(ダブルエンドキューを意味します)です。なんらかの理由でLinkedList<T>をラップするだけでは十分ではない場合は、immutable dequeというEric Lippertの実装をご覧ください。

9

普通はdequeと呼ばれるものがほしいと思うようです。 .NETで最もよく知っているのはLinkedList<T>です。私は循環バッファから構築されたものがあるとは思わない(必要に応じて拡張する)。これはおそらく最初から構築する方法だろう。

もちろん、それを自分で実装することもできますが、私が本当に良い理由がない限り、おそらくLinkedList<T>を使用します。 Eric Lippertもan immutable implementation you could look atblog post covering it)ですが、明らかにたくさんのテストなどを書きたいと思っています。は不変のものです。は不変です。

+0

彼らはaskjonskeet.comにこのサイトの名前を変更することを検討する必要があります –

+1

@SethReno:それはすでに取られている...それを試して:) –

0

なぜLinkedList<T>を使用しないのですか?これは、開始、終了、およびその間のどこかに追加を可能にします。 LinkedList<T>メソッドのいくつかを公開したくない場合は、常にそれをラップして、公開するメソッドのみを公開することができます。

関連する問題