初始化类定义中的结构数组
Initializing an array of structs within a class definition
我有一个结构可以为BST创建这样的节点
struct BSTNode{
int data;
BSTNode *left;
BSTNode *right;
};
我需要在类中创建这些根节点的数组
class HashBST{
public:
bool lookup(int);
void insert(int);
bool remove(int);
float getLoad();
//private:
int hash(int);
BSTNode *table[1019];
float load;
int occupied = 0;
int tableSize = 1019;
};
从那里我希望能够检查并查看 BST 节点是否有条目。最初我尝试在结构定义中将data
int 设置为 -1,但在类中的数组中,每个节点都有一个垃圾数据值。
有没有办法将所有数据值设置为 -1,或者更理想的情况是,将table
数组中的所有指针设置为NULL
,直到其中存储某些内容?
有没有办法将所有数据值设置为 -1,
没有,因为节点的设计意味着哈希表的特定设计。由于您有节点,这意味着您使用单独的链接来解决哈希表冲突。
这意味着您的存储桶数组table
需要使用空指针进行初始化,否则它包含不确定的值:
BSTNode* table[1019] = {}; // Zero-initialize buckets.
然后lookup
成员函数将如下所示:
bool HashBST::lookup(int value) {
unsigned value_hash = hash(value); // Hash must be an unsigned value.
unsigned index = value_hash % tableSize;
for(BSTNode* node = table[index]; node; node = node->right) {
if(node->data == value)
return true;
}
return false;
}
在更高级的版本中,存储桶表应该只是一个指针BSTNode* table;
它使用new[]
的结果进行初始化,并且引用表的大小为tableSize
。
以下是我以C++友好的方式执行此操作的方法:
首先,将table
转换为std::vector
:
std::vector<BSTNode*> table
为HashBst
创建一个构造函数,该构造函数使用所有 nullptr 值初始化std::vector<T*>
。
HashBST() : table(1019) {} //table items are all nullptr
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组