C ++使用链接从哈希表中获取属性

时间:2011-11-11 01:41:26

标签: c++ pointers struct hashtable

我正在实现一个哈希表来帮助存储和检索应用程序的属性。目前,它主要是工作,除非我尝试检索不存在的值。我的代码应返回一个空字符串,而不是崩溃。这是相关的代码。该数组是动态分配的。

struct Property {
    Property* next;
    std::string key;
    std::string value;

    Property() {
        key = "";
        value = "";
        next=NULL;
    }
};

Property* properties;
int propSize;

std::string Properties::getProperty(std::string key) {

    Property *ptr = &properties[hashcode(key)%propSize];
    if (properties[hashcode(key)%propSize].key == "") {
        return "";
    }
    else {
        while((ptr->key != key) && (ptr->next != NULL))
            ptr = ptr->next;

        if (ptr->key != key)
            return "";
        else
            return ptr->value;
    }

}

1 个答案:

答案 0 :(得分:0)

使用几个标准哈希表实现之一,如unordered_map。你提到你“需要能够通过并保存地图中的所有条目”;迭代地图并用元素做任何你想做的事情是微不足道的,例如使用std::copy()