D中的队列类型?

时间:2017-10-05 23:52:24

标签: queue message-queue d

许多语言都有队列类型(http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html);我甚至找不到实现队列类型的库(先进先出数据结构)。缺乏队列让我感到惊讶。 D队列有不同的方式吗?

我期望的语法与此类似:

//To create
Queue!string queue = new Queue!string;

//To add
queue.add("value");

//To access
string value = queue.get; //will remove from queue
//or
foreach (string value; queue) {}

如何在D中完成?或者我需要自己实施吗?

1 个答案:

答案 0 :(得分:2)

目前在D标准库中的容器位于std.container中。虽然他们有点稀疏。它们的重新设计正在进行中,但现在已经有一段时间了,谁知道什么时候会完成。所以,不幸的是,D的标准库在容器领域有点弱。话虽这么说,你可以使用std.container.dlist.DList作为队列。它是一个双向链表,通常是内部实现队列的方式,即使它不是它们公开的API。

或者,http://code.dlang.org有几个包含容器的包。

但我建议从DList开始,看看它对你需要的东西有多好。如果您正在寻找基本队列,它应该可以正常工作。只需使用insertBack将内容放在最后,front可以获取第一个元素,removeFront可以从前面删除项目。如果你想要一个强制队列的API,你可以将DList包装在你自己的类型中。