Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据结构是否用于高级语言? 我目前还在学校,正在学习C++中的数据结构。在业余时间,我喜欢用“更高级”的语言编程(主要是Ruby和一些c语言)_Ruby_Data Structures - Fatal编程技术网

数据结构是否用于高级语言? 我目前还在学校,正在学习C++中的数据结构。在业余时间,我喜欢用“更高级”的语言编程(主要是Ruby和一些c语言)

数据结构是否用于高级语言? 我目前还在学校,正在学习C++中的数据结构。在业余时间,我喜欢用“更高级”的语言编程(主要是Ruby和一些c语言),ruby,data-structures,Ruby,Data Structures,既然这些高级语言为您管理内存,那么您将如何使用数据结构呢?我可以理解对队列和堆栈的需求,但您是否需要在Ruby中使用二叉树?还是一棵2-3-4的树?为什么? 谢谢 既然这些高级语言 为你管理内存,你会怎么做 你使用数据结构来做什么 使用数据结构的主要原因不是垃圾收集。但它是以某种方式高效地存储数据。因此,最重要的是如何组织数据。这正是语言无法自动为您理解的 确保高级语言将附带几个预加载的数据结构(并且在提供这些预加载的数据结构时,您应该100%使用它们,而不是制作自己的),但并非提供您可能需要的

既然这些高级语言为您管理内存,那么您将如何使用数据结构呢?我可以理解对队列和堆栈的需求,但您是否需要在Ruby中使用二叉树?还是一棵2-3-4的树?为什么?

谢谢

既然这些高级语言 为你管理内存,你会怎么做 你使用数据结构来做什么

使用数据结构的主要原因不是垃圾收集。但它是以某种方式高效地存储数据。因此,最重要的是如何组织数据。这正是语言无法自动为您理解的

确保高级语言将附带几个预加载的数据结构(并且在提供这些预加载的数据结构时,您应该100%使用它们,而不是制作自己的),但并非提供您可能需要的所有数据结构

数据结构以某种方式组织内存存储,以便在其上运行的算法可以实现,从而产生高效的结果

对于大多数任务,您不需要实现自己的数据结构。但这完全取决于您所编写的代码

我能理解排队的必要性 但是你需要吗 在Ruby中使用二叉树

有很多使用二叉树的例子,但在日常项目中并不常见,例如,您可能需要实现哈夫曼编码

可以使用trie节省空间和快速查找,或者您可能需要使用btree通过快速查找存储大量数据。有几种数据结构具有特定用途,并针对不同的情况进行了优化。不管这种语言是否现代,不管它是否有垃圾收集,都不会改变这一点

然而,趋势是,定制实现的数据结构编码更少,思考更少。常见算法也有类似的争论。在更现代的语言中,如LINQ,您只需指定排序即可。实际上你并没有说如何分类

总之,是的


尽管GC可以简化您的工作,但在许多情况下,适当组织数据的能力可以让您编写更有效(或性能更高)的程序。

如果您希望能够在排序的集合中高效地查找某些内容,您可以使用二叉树,就像在任何其他语言中一样。数据结构的选择在任何语言中都很重要。在高级语言中,它的重要性并没有降低,除非高级语言提供了大型库,其中包含了为您处理此问题的深思熟虑的智能设计,在这种情况下,您不必自己设计数据结构,但您必须知道要使用哪种内置数据结构

Java Collections框架是广泛而出色的,但是如果您使用了错误(不适当)的Collections对象,您的程序的性能将受到影响


此外,一些数据结构比其他数据结构更节省空间。是的,内存很便宜,现代GC语言将为您管理内存,但如果您处理的是大量数据,那么如果您能够提高内存效率,那么数据结构将很重要。

根据我使用Python(表面上类似于Ruby)的经验,我从来没有实现过二叉树或hashmap之类的东西。但原因与托管内存关系不大。标准库中有最有用的结构的实现,如字典(hashmaps)和列表;为了提高速度和效率,它们(至少部分)是用解释器所用的任何较低级别的语言实现的,几乎可以肯定,它们的性能会超过您可能提出的任何自定义实现。

我专业地用Ruby编程,我发现对数据结构的全面了解非常有帮助,尽管我从未在校外实现过具有任何特定性能特征的树(尽管我必须实现树状结构)


当您必须跨多台机器进行扩展或在不同的服务之间进行协调时,在微观规模上在阵列上实现时似乎不相关的相同数据结构(因为语言为您提供这些结构)往往会在“企业”中再次出现。当你写这些东西时,知道你可以选择什么是一个有用的工具。

你可以使用这些数据结构来解决与其他语言完全相同的问题。不同之处在于现代语言不同于传统语言。他们的标准库通常已经有了非常高效的实现。尽管如此,您仍然必须了解它们才能使用它们。“更高级别”并不意味着真正的魔法。

大多数时候 您使用它们,但不需要实现它们;它们是为你而实施的

例如,字典通常可以作为哈希映射和二叉树的组合在内部实现。该列表可以实现为链表等

但有时
您可能想要实现一个数据结构,例如,如果您正在存储大量的数据(例如,数百万行文本)。我自己还没有遇到过需要做这样一件事的情况,但考虑过可能需要这样做的项目。(例如,高效地打开和编辑一个巨大的文本文件等)。

正是数据结构使一种语言具有“高水平”。@s.Lott:除了其他一些东西(类型推断、垃圾收集等),这是另一个问题/答案。