Joh*_*ell 21 .net priority-queue standard-library library-design data-structures
Stack Overflow上有一些线程涉及在.Net和C#中实现优先级队列.
我的问题是一个更基本的问题:为什么在.Net框架中没有开箱即用的优先级队列?甚至C++标准库也有一个.
adr*_*nks 12
前一段时间有一个问题(为什么C#允许像C++这样的非成员函数)促使Eric Lippert写了一篇关于其原因的博客文章.在其中,他解释说:
我被问到"为什么C#不实现功能X?" 每时每刻.答案总是一样的:因为没有人设计,指定,实施,测试,记录和发送该功能.所有这六件事都是实现这一功能所必需的.所有这些都耗费了大量的时间,精力和金钱.功能并不便宜,我们非常努力地确保我们只提供那些能够为我们的用户提供最佳利益的功能,因为我们的时间,精力和预算都有限.
我怀疑这可能是为什么.Net没有附带优先级队列的答案 - 没有足够的时间,精力,金钱,需求(?)来实现.
.NET 4.0 引入了一个SortedSet<T>
类,以及ISet<T>
由SortedSet<T>
和实现的接口HashSet<T>
。这显然会使实现您自己的PriorityQueue<T>
类变得更简单。
然而,仍然没有IQueue<T>
接口,这至少承认需要优先队列或除基本 BCL 之外的任何其他实现Queue<T>
。同样,没有IStack<T>
.
就我个人而言,我觉得缺少这些最基本的接口令人失望和短视,特别是因为从现有类中提取简单接口的设计/规范/实现/测试/文档成本确实应该非常低。
public interface IQueue<T> : IEnumerable<T>, ICollection, IEnumerable
{
T Dequeue();
void Enqueue(T item);
T Peek();
}
Run Code Online (Sandbox Code Playgroud)
在那里,看到了吗?我已经做到了。
归档时间: |
|
查看次数: |
3111 次 |
最近记录: |