2016-08-05 1 views
1

An Extensive Examination of Data Structures Using C# 2.0を読んだあと、C#のキューには、キューの要素が順番に格納される内部配列、開始インデックスと終了インデックスがあることを理解しています。私はあなたがなぜn番目の要素を読み書きできないべきか理解できません。あなたがしなければならないのは、return array[(n + start) % array.Length]です。 nが範囲内にあれば、もちろんです。
これは時々役に立ちます。キューデータ構造がランダムアクセスをサポートしない理由

+1

これは 'Queue'が作成されたものではないためです。 – user3185569

+0

n番目の要素を読むのに役立つことがあると思います。あなたがそれに書き込むことができれば、それは単純に配列またはリストになります。ただし、実装の詳細に頼っています。すべての言語のすべてのキューが配列として実装されているわけではありません。ランダムアクセスはキューの哲学の一部ではありません。言い換えれば、ランダムアクセスがあった場合、それはキューではありません。 –

+1

要求され、拒否されました:https://github.com/dotnet/corefx/issues/4961 – usr

答えて

0

あなたはElementAtを使用してn番目の要素を読むことができます:

var element = q.ElementAt(index); 

ことがIEnumerable拡張メソッドなので、あなたがusing System.Linq;

を追加することが必要であることは何ではありませんので、しかし、あなたはn番目の要素を記述することはできません待ち行列は作られた。これは、先入れ先出しであるキューの最も重要な機能を破るだけです。インデックスにアイテムを挿入できる場合は、最初にキューを使用する必要はありません。

+0

私はアイテムを挿入することについて話していませんでした。しかし、実際には、アイテムを挿入するオプションは、最初の場所でキューを使用するポイントを敗北させるだろうか?キューのポイントの一部は、アイテムの順序が保持されていることです。しかし、別の部分は、一定時間内にデータ構造の反対側の項目を追加したり削除したりできるということです。 – NounVerber

+0

@NounVerberこれはキューではありません。独自のデータ構造を作成する必要があります。または、Listのような柔軟なものを使用してください。 * n番目の要素*の意味は何ですか? – user3185569

+0

Linqを使うのは良い考えです。 – NounVerber

関連する問題