ruby 数组内部结构

标签 ruby arrays

ruby 数组是如何在内部实现的(主要是在 CRuby 中,但欢迎任何其他信息)?

它们是像 C++ 向量那样可增长的数组还是基于列表? shift/unshift 和按索引访问元素的复杂性如何?

最佳答案

它们是“在最后增长”的可增长数组。

shiftO(1)unshiftO(n) 并且通过索引访问是 O(1)。据我所知,这适用于所有 ruby​​ 实现,但它绝对适用于 MRI。

更新:最初写完这个答案后,Ruby 是 enhanced使 unshift 摊销 O(1)。增强数组在Ruby 2.0.0之后,shiftunshiftpushpop 都是 O(1) 或摊销 O(1)

关于ruby 数组内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310015/

相关文章:

ruby-on-rails - Rails 在哪里存储夏令时的开始和结束日期?

ios - 简单的 firebase 搜索用户

arrays - Excel VBA : What is the Maximum Number of String Elements that can be Stored in an Array

java - Android中读取json数组的方法

java - Gui 中的数组递增

ruby - Redis-rb客户端队列

ruby - 使用column_names时有没有办法减少counter_culture gem?

ruby - 去掉ruby项目中的很多require_relatives

c# - 有没有理由我不应该从 C# 开始

c - 在 C 中使用递归函数进行冒泡排序