Tag: 数据结构

镜头,fclabels,数据访问器 – 哪个结构访问和变异的库更好

至less有三个stream行的库访问和操作logging的领域。 我所知道的是:数据访问器,fclabels和镜头。 我个人从数据访问开始,现在正在使用它们。 然而最近在haskell咖啡馆有一个fclabels优越的意见。 所以我对这三个(也许更多)图书馆的比较感兴趣。

.Net中的优先队列

我正在寻找一个优先级队列或堆数据结构的.NET实现 优先级队列是比简单sorting更灵活的数据结构,因为它们允许新元素以任意间隔进入系统。 将新工作插入优先级队列要比在每次到达时重新sorting所有内容要便宜得多。 基本优先级队列支持三个主要操作: 插入(Q,X)。 给定一个具有密钥k的项目x,将其插入优先级队列Q. 查找-最小(Q)。 返回指向其优先级队列Q中的键值小于其他键的项的指针。 删除 – 最小(Q)。 从优先级队列Q中删除其项最小的项 除非我看错了地方,否则框架中没有一个。 有人知道一个好的,还是应该滚我自己的?

.NET数据结构:ArrayList,List,HashTable,Dictionary,SortedList,SortedDictionary – 速度,内存,以及何时使用?

.NET有很多复杂的数据结构。 不幸的是,其中一些是非常相似的,我不知道什么时候使用一个,什么时候使用另一个。 我的C#和Visual Basic书籍中的大部分都在某种程度上对它们进行了讨论,但是他们从来没有真正细读过。 Array,ArrayList,List,Hashtable,Dictionary,SortedList和SortedDictionary有什么区别? 哪些是可枚举的(IList – 可以做'foreach'循环)? 哪些使用键/值对(IDict)? 内存占用情况如何? 插入速度? 检索速度? 还有其他的数据结构值得一提吗? 我仍然在寻找关于内存使用和速度的更多细节(Big-O符号)。

什么是循环不变式?

我正在阅读“algorithm简介”CLRS。 作者在第2章(插入sorting)中讨论了循环不variables。 我不知道这意味着什么。

为什么没有java.util.Set get(int index)?

我确定有一个很好的理由,但是有人能解释为什么java.util.Set接口缺lessget(int Index)或者任何类似的get()方法吗? 看起来套是伟大的东西进入,但我找不到一个优雅的方式从它检索单个项目。 如果我知道我想要的第一个项目,我可以使用set.iterator().next() ,但否则似乎我必须转换到一个数组来检索特定索引的项目? 从一个集合中检索数据有什么合适的方法? (除了使用迭代器) 我相信,从API中排除这个事实意味着不这样做的一个很好的理由 – 请问有人能够启发我吗? 编辑:这里有一些非常好的答案,还有一些说“更多的上下文”。 具体的情况是一个dbUnittesting,我可以合理地断言,查询返回的集合只有一个项目,我试图访问该项目。 但是,如果没有这种情况,这个问题就更加有效了,因为它仍然更加集中: 设置和列表有什么区别 。 感谢所有的下面的美妙的答案。

B树和B +树之间的差异

在B树中 ,可以将内存和叶节点中的密钥和数据都存储,但在b +树中, 只能将数据存储在叶节点中 。 在b +树中做上述有没有什么好处? 为什么不在所有地方都使用b树而不是b +树,直观地看起来好多了? 我的意思是,为什么你需要在b +树中复制密钥(数据)?

Redis使用的底层数据结构是什么?

我试图在一个确定的列表中回答两个问题: Redis使用的底层数据结构是什么? 每种types的主要优点/缺点/用例是什么? 所以,我读过Redis列表实际上是用链表实现的。 但对于其他types,我无法挖掘任何信息。 另外,如果有人偶然发现了这个问题,而且没有对修改或访问不同数据结构的优缺点进行高层次的总结,那么他们也会有一个完整的清单, 以便最好地使用特定的types来引用。 具体来说,我正在寻找概述所有types:string,列表,集,zset和哈希。 哦,到目前为止,我已经看过这些文章: http://redis.io/topics/data-types http://redis.io/topics/data-types-intro http://redis.io/topics/faq

如何检测链表中的循环?

假设你有一个Java链接列表结构。 它由节点组成: class Node { Node next; // some user data } 每个节点指向下一个节点,除了最后一个节点,下一个节点为空。 说有可能列表可以包含一个循环 – 即最后一个节点,而不是一个空,有一个参考列表中的其中一个节点之前。 什么是最好的写作方式 boolean hasLoop(Node first) 如果给定的节点是带有循环的列表中的第一个,则返回true否则返回false ? 你怎么写,以便它需要一个恒定的空间和合理的时间? 下面是一个循环列表的图片:

如何检查一个特定的密钥是否存在于一个散列或不是?

我想检查会话哈希中是否存在“用户”键。 我怎样才能做到这一点? 请注意,我不想检查密钥的值是否为零。 我只想检查“用户” 键是否存在。

TMP:如何推广vector的笛卡尔乘积?

有一个优秀的C ++解决scheme(实际上是2个解决scheme:recursion和非recursion)到整数向量向量的笛卡尔乘积 。 为了说明/简单起见,让我们只关注非recursion版本 。 我的问题是,如何可以推广这个代码与模板采取一个std::tuple同构向量std::tuple看起来像这样: {{2,5,9},{"foo","bar"}} 并生成一个tuple向量 {{2,"foo"},{2,"bar"},{5,"foo"},{5,"bar"},{9,"foo"},{9,"bar"}} 如果它使生活更容易,让我们假设input中的内部向量是均匀的。 所以这样的input是不允许的 : {{5,"baz"}{'c',-2}} 编辑改变input从锯齿状vector到元组