0
我想在C++中使用哈希技术制作电话目录项目。我需要做的一件事是它必须根据位置搜索联系人,该位置作为关键值,但同一位置会有多个联系人。因此,如何在同一个关键字(位置)下存储多个值(姓名,电话号码)。如何在同一个键下使用哈希在C++中存储多个值
我想在C++中使用哈希技术制作电话目录项目。我需要做的一件事是它必须根据位置搜索联系人,该位置作为关键值,但同一位置会有多个联系人。因此,如何在同一个关键字(位置)下存储多个值(姓名,电话号码)。如何在同一个键下使用哈希在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>>
的东西。
使用'std :: unordered_multimap'。 –
@DannyuNDos是散列技术的一部分? –
这是一个哈希表,能够存储多个元素具有相同的密钥。 –