【发布时间】:2015-01-09 23:02:35
【问题描述】:
int arr [] = {69, 1, 12, 10, 20, 113};
当我这样做时会发生什么
int x = a[3];
??????
我一直觉得a[3] 的意思是:
"从内存地址arr开始。
向前走 3 个内存地址。
获取该内存地址处表示的整数。"
但是我对哈希表的工作方式感到困惑。因为如果哈希表被实现为一个“桶”数组(就像教授在本次讲座中所说:https://www.youtube.com/watch?v=UPo-M8bzRrc),那么你仍然需要走到你需要的桶;因此,它们的访问效率并不比数组高。
谁能帮我解决这个问题?
【问题讨论】:
-
您不会“步行”到数组元素 - 您只需在数组的基地址上添加一个偏移量,然后为您提供元素的地址。您可以这样做的原因是因为数组中的所有元素都具有相同的大小(相同的字节数)。
-
哈希表的要点是键不必是索引。
-
如果您已经知道要从数组中获得哪个索引,那么基本上没有什么更快的了。哈希表基本上可以让您更轻松地确定在表中搜索值时要使用(或从哪个索引开始)。
-
编写一个简单的程序并阅读它的汇编列表是了解它如何工作的新知识的好方法。 (我并不是建议你不要问。)
-
散列很有用,因为键不必是整数。