【发布时间】:2016-12-11 17:28:07
【问题描述】:
阅读An Extensive Examination of Data Structures Using C# 2.0后,我了解到C#中的队列有一个内部数组,其中队列的元素按顺序存储,一个开始索引和一个结束索引。我不明白为什么您不应该能够读取或写入第 n 个元素。您所要做的就是return array[(n + start) % array.Length]。当然,如果 n 在范围内。
这有时会很有用。
【问题讨论】:
-
因为
Queue不是为此创建的。 -
我想有时读取第 n 个元素可能很有用。但是,如果您可以写入它,那么它只是一个数组或列表。但是,您依赖于实现细节。并非所有语言的所有队列都实现为数组。随机访问不是队列哲学的一部分。换句话说:如果它有随机访问,它就不会是一个队列。
-
queue 遵循先进先出原则,因此您不能访问 'n' 处的元素,除非在 n-1 个元素出队之前,队列用于特殊目的。使用简单的数组。
-
@lokesh1729 如果要删除前面的项目,简单数组的性能会更差。所以我可能会编写自己的随机访问队列数据结构。
标签: c# data-structures queue