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容器类型相对应的容器类型.
容器是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:使用内置关联数组.