如何在C 中使用HASHIS存储多个值

how to store multiple values under same key using hashing in c++

本文关键字:存储 HASHIS      更新时间:2023-10-16

我想使用哈希技术在C 中进行电话目录项目。我需要做的一件事是必须基于位置搜索联系人。值,但在同一位置将有多个联系人。

如果您使用的是 c 11 或更新,则可以使用std::unordered_multimap来存储每个键的多个条目(例如每个位置多个条目)。这是一张哈希地图,允许使用相同键的多个条目。要存储每个条目的多个属性,您可以使用结构或类。最后,看起来像这样:

struct contact_t {
    std::string name;
    std::string phone_number;
}
std::unordered_multimap<std::string, contact_t> directory;
int main(int argc, char *argv[])
{
    // Add entry
    contact_t contact;
    contact.name = "Fooman";
    contact.phone_number = "00 000 00000000";
    directory.emplace("Barcity", contact);
    // List all entries of one city
    auto range = directory.equal_range("Barcity");
    for (auto it = range.first; it != range.second; ++it) {
        auto &entry = it->second; // it->first would be the key/location
        std::cout << "Name: " << entry.name
                  << "Phone: " << entry.phone_number << std::endl;
    }
}

但是,考虑使用相同密钥的值未排序。您可能需要使用std::unordered_map<std::string, std::multiset<contact_t>>之类的东西。