我是否正确设置了此哈希表?
Am I Setting up this Hash Table Correctly?
我在一个数据结构类中,我们得到了一个关于哈希表的项目。我得到的指示摘录如下:
哈希表是指向结构
hash_table_entry
的指针数组 全部初始化为Nil
。
所以这就是我写的(再次,整个程序的摘录(:
hash_table_entry *hash_table = new hash_table_entry[hash_table_size];
for (int i=0;i<hash_table_size;i++)
{
hash_table[i] = new hash_table_entry;
}
hash_table_entry是:
struct hash_table_entry{
char event_id; // Event id -- key used to hash on
int year; // Year of storm event
int event_index; // For the given year, the index into array of storm events };
所以我的问题是:
hash_table
hash_table_entry
指针类型的数组,对吗?- 当 for 循环穿过数组并创建新的
hash_table_entry
结构时,默认结构变量是否自动设置为"Nil
"?
提前感谢您的任何见解!
指针类型的数组hash_table_entry对吗?
不,hash_table
是指向hash_table_entry
的指针,在给定的new hash_table_entry[hash_table_size];
初始化后,它将指向(第一个元素(hash_table_entry
数组(不是数组到指向hash_table_entry
的指针(。
当 for 循环穿过数组并创建新的hash_table_entry结构时,默认结构变量是否自动设置为"Nil"?
如评论中所述,作业
hash_table[i] = new hash_table_entry;
由于类型不匹配,无法编译。hash_table[i]
的类型为hash_table_entry
,而new hash_table_entry
的类型为hash_table_entry*
。
但除此之外,对于初始化问题:new hash_table_entry
和new hash_table_entry[hash_table_size]
(都创建对象或类型为hash_table_entry
的对象数组(创建对象。由于这些表达式中没有给出初始值设定项,因此对象是默认构造的。由于hash_table_entry
没有任何用户声明/定义的构造函数,这意味着将使用隐式定义的默认构造函数。这个构造函数确实对hash_table_entry
的所有成员执行默认构造,这(因为它们是非类类型(意味着对它们不做任何事情,因此成员的值在初始化后将保持不确定。
这是否是Nil
任务的含义是值得怀疑的。Nil
不是C++中存在的东西,所以我假设NULL
或nullptr
的意思是,你应该分配一个指针数组而不是对象,并使用空指针初始化它们。
指向hash_table_entry
的指针数组分配了new hash_table_entry*[hash_table_size]
,这会导致hash_table_entry**
,而不是hash_table_entry*
。如果按如下所示添加{}
:
new hash_table_entry*[hash_table_size]{}
或更明确
new hash_table_entry*[hash_table_size]{nullptr}
它还将为您初始化指向空指针的所有指针,无需循环。
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- C++中的并发哈希表
- 在具有开放寻址的哈希表中插入节点 [优化逻辑]
- 与C++哈希表的基础知识混淆
- 调整大小和复制哈希表数组中的元素
- 带链接的基本哈希表
- C++哈希表中,两个相同的实现,但一个给出错误
- 如果索引不是整数,我们如何在 C++ 中插入哈希表
- 查找项目在哈希表中的位置
- 为什么C++ STL 哈希表 (unordered_map) 不接受向量作为键
- C++哈希表 - 如何解决自定义数据类型作为键的unordered_map冲突?
- 使用哈希表设置实现
- 同时写入和读取哈希表
- 在 C++ 中为特定哈希表创建插入函数
- 我可以比朴素哈希表更快地将随机字符串映射到两个类吗?
- 我是否正确设置了此哈希表?
- 在没有"线程管理"的情况下C++设置并发哈希表/哈希?
- 正确重载 [括号] 运算符用于哈希表获取和设置