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是散列技術的一部分? –
這是一個哈希表,能夠存儲多個元素具有相同的密鑰。 –