为什么指向列表的指针创建一个二维列表结构

Why pointer to list create a 2D list structure

我正在尝试实现哈希表。我理解 list<int> *table 是指向列表(条目)的指针,并且在构造函数中,我初始化了列表的大小(表示有多少条目)。 我很好奇为什么这可以是list(2D list)结构的列表,为什么我可以执行

table[key].push_back(...);

谢谢

class HashTable {
private:
    int size;
    list<int> *table;
    
public:
    HashTable(int size);
    int hashFuntion(int x) {
        return x % size;
    };
    void insertItem(int x);
};

HashTable::HashTable(int size) {
    this->size = size;
    table = new list<int>[size];
}

void HashTable::insertItem(int x) {
    int key = hashFuntion(x);
    table[key].push_back(x);
}

我认为你应该学习指针的工作原理。

你在 Initializer 中创建的列表有 'size' 个。

table[0], table[1] ... 都是list.

想想int的情况

int* table = new int[size];

table[0], table[1] 都是整数

list<int>* table = new list<int>[size];

然后table[0],table[1]这些都是list.

列表是一维结构。然后你用一维结构做一个一维结构。

然后二维结构