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

C++中如何在类的成员函数内访问该类的vector类型成员

类成员vector的访问方法

在LISCH类的非静态成员函数(比如insert)中,直接使用成员变量名data_vec即可访问,不需要加类名前缀LISCH.,也可以可选加this->明确指代类成员,比如this->data_vec。

现有代码的其他问题修正

1. 构造函数逻辑修复

你当前的构造函数没有初始化data_vec的长度,直接在insert中访问下标会触发越界崩溃,修改构造函数如下:

LISCH::LISCH(int table_size){
   // 按传入的大小初始化vector长度
   data_vec.resize(table_size);
}

2. 空位置判断逻辑修复

data_vec存储的是lisch_entry实体对象,不是指针,不能和NULL比较。你已经在lisch_entry的构造函数中将valid字段初始化为false,直接判断该字段即可:

if(!data_vec[add].valid) 
{
    // 该位置为空,可以写入数据
}

3. 元素写入逻辑修复

std::vector的insert方法是用于新增元素、改变vector总长度的接口,你要修改指定位置已有元素的内容,直接赋值即可:

data_vec[add].data = new_data;
data_vec[add].valid = true;
// 可根据你的哈希表冲突处理逻辑补充link字段赋值

修正后完整的insert示例

void LISCH::insert(int new_data){
    int add = new_data % data_vec.size(); // 用实际哈希表长度取模,不要写死固定值
    if(!data_vec[add].valid) 
    {
        data_vec[add].data = new_data;
        data_vec[add].valid = true;
        data_vec[add].link = -1; // 可根据你的冲突处理逻辑修改初始值
        return;
    }
    // 此处补充哈希冲突的处理逻辑
}

内容的提问来源于stack exchange,提问作者Oğulcan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:04