C ++ получить свойство из хеш-таблицы, используя цепочку - PullRequest
0 голосов
/ 11 ноября 2011

Я реализую хеш-таблицу, чтобы помочь хранить и извлекать свойства для приложения.На данный момент это в основном работает, за исключением случаев, когда я пытаюсь получить значение, которое не существует.Мой код должен возвращать пустую строку, вместо этого он падает.Вот соответствующий код.Массив выделяется динамически.

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 голосов
/ 11 ноября 2011

Используйте одну из нескольких стандартных реализаций хеш-таблицы, например unordered_map.Вы упомянули, что вам «нужно пройти и сохранить все записи на карте»;тривиально перебирать карту и делать с элементами все, что вы хотите, например, используя std::copy().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...