为什么指向列表的指针创建一个二维列表结构
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.
列表是一维结构。然后你用一维结构做一个一维结构。
然后二维结构
我正在尝试实现哈希表。我理解 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.
列表是一维结构。然后你用一维结构做一个一维结构。
然后二维结构