为什么D缺少容器类?

Arl*_*len 17 d data-structures

我习惯了C++ STL容器.D有数组,关联数组和字符串,但其余部分在哪里?我知道std.container,但据我所知它只有一个容器,红黑树,如果我需要类似的东西,我可以使用它std::set.但是,如果我需要一个list怎么办?我应该使用数组吗?

std::vector - > array

std::deque - > ?

std::queue - > ?

std::stack - > ? maybe array and std.container functions ?

std::priority_queue - > BinaryHeap

std::list - > ?

std::set - > std.container RedBlackTree

std::multiset - > ?

std::unordered_set - > ?

std::map - > associative arrays

std::multimap - > ?

std::unordered_map - > ?

有没有计划支持任何失踪人员?

Jon*_*vis 20

我认为将更多容器装入std.container的主要措施是Andrei Alexandrescu已经整理出如何最好地处理自定义分配器,并且他希望在实现所有各种容器类型之前这样做,因为否则它将会一旦他做了,就需要进行大量的代码更改.

在此期间,您拥有内置数组和关联数组,并且std.container包含Array(实质上是std::vector)SList(它是单链表)RedBlackTree(可用于任何类型的集合或映射使用)树 - 这是STL的各种集合和地图类型所做的事情),和BinaryHeap.

所以,毫无疑问情况需要改进(而且会发生),但我不知道多久.最终,std.container应该具有与所有STL容器类型相对应的容器类型.

  • 分配器应该是Phobos审查队列中接下来的几件事之一,主要是因为Andrei已经提出了一个设计并且我已经使用它并为RegionAllocator运行它,并且还在GC分配器周围实现了一个简单的包装器来证明设计适用于多个分配方案. (4认同)
  • 如果你想使用它,dcollections工作正常,但它显然不是标准库的一部分.然而,这是一个坚实的图书馆. (2认同)

dsi*_*cha 9

容器是D中图书馆开发方面的一个待办事项,但没有人在Phobos中获得一个全面的容器库,因为没有人同意设计应该是什么,每个为标准库做出贡献的人(已经发展得非常快)已经发现了更多有趣的事情要做.

std::vector- > array正如你所说

std::dequeue,std::queue遗憾的是,我们还没有.

std::stack:这可以简单地在SList数组或数组上实现.

std::set:这可以在其中任何一个上轻松实现RedBlackTree.

std::multiset:我认为RedBlackTree可以设置为允许重复.

std::unordered_set:这可以在内置关联数组之上轻松实现.要在内置AA上实现它,请使用byte[0][SomeType].

std::map:可以简单地实现RedBlackTree.

std::multimap:您可以为此使用关联的数组数组.

std__unordered_map:使用内置关联数组.