You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ BucketList与Node类构造函数初始化实现问题求助

构造函数实现思路

首先你需要先在BucketList类的private块补充两个必要成员变量,用来跟踪当前元素总数和桶数组容量:

private:
    Node** buckets_; // 原有成员
    int size_; // 存储当前已插入的字符串总数
    int capacity_; // 存储当前桶数组的容量

1. Node类构造与析构实现

Node作为链表节点,构造时仅需要初始化自身成员为默认值即可,内存管理由BucketList统一负责:

Node::Node() {
    next_ = nullptr;
    // s_是string类型,会自动调用默认构造初始化为空串,不需要额外赋值
}

Node::~Node() {
    // 不需要手动释放next_的内存,避免递归释放导致重复析构,BucketList析构会逐节点回收
}

2. BucketList默认构造函数实现

默认构造需要初始化空的哈希桶数组,容量为预设的INITIAL_CAP:

BucketList::BucketList() {
    capacity_ = INITIAL_CAP;
    size_ = 0;
    // 申请容量为capacity_的Node指针数组
    buckets_ = new Node*[capacity_];
    // 所有桶初始化为空指针(代表空链表)
    for (int i = 0; i < capacity_; ++i) {
        buckets_[i] = nullptr;
    }
}

额外提示

你给出的contains函数示例里,取模用的是固定的INITIAL_CAP,后续实现扩容逻辑后这里需要改为取模当前的capacity_,否则会出现数组越界问题:

// 修改后的哈希取模逻辑
int hc = h(s) % capacity_;

内容的提问来源于stack exchange,提问作者Asad Kareem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:54:04