Представьте память как большой, стол две колонки:
+---------+-------+
| ADDRESS | VALUE |
+---------+-------+
| ... | ... |
+---------+-------+
| 100 | 69 | <-- &arr[0] is 100
+---------+-------+
| 101 | 1 |
+---------+-------+
| 102 | 12 |
+---------+-------+
| 103 | 10 | <-- &arr[3] is 103
+---------+-------+
| 104 | 20 |
+---------+-------+
| 105 | 113 |
+---------+-------+
| ... | ... |
+---------+-------+
Я хочу подчеркнуть, что это высоко упрощенная модель, но это должно дать вам представление о том, что происходит. Ваш компьютер знает, что ваш массив начинается, допустим, адрес 100.И поскольку все элементы в заданном массиве имеют одинаковый размер, вы можете легко получить доступ к третьему элементу массива, добавив +3 к начальному адресу. Компьютер не должен «ходить» к третьему элементу массива, он просто захватывает значение, которое хранится в памяти по адресу 100 + 3.
Если вы хотите увидеть пример этого в действии, скомпилировать и запустить следующий код:
#include <iostream>
using namespace std;
int main() {
int a[] = { 1, 2, 3 };
cout << "Address of a:\t\t" << &a[0] << endl;
cout << "Address of a[2]:\t" << &a[2] << endl;
return 0;
}
Обратите внимание на адрес . Предполагая, что ваш компьютер использует 32-битные целые числа, вы должны видеть, что адрес a [2] - это просто адрес a + 2 * 4. Причина, по которой он добавляет 2 * 4, а не только 2, состоит в том, что каждое целое число фактически использует 4 байта памяти (т. Е. Одно значение будет охватывать 4 адреса).
Вы не «идете» к элементу массива - вы просто добавляете смещение к базовому адресу массива и затем указываете адрес элемента. Причина, по которой вы можете это сделать, состоит в том, что все элементы массива имеют одинаковый размер (одинаковое количество байтов). –
Точка хэш-таблицы - это ключ, который не должен быть индексом. –
, если вы уже знаете, какой индекс вы хотите от массива, там в принципе нет ничего быстрее. Хэш-таблица в основном облегчает вам определение того, какой индекс использовать (или начинать с) при поиске значения в таблице. – YoungJohn