簡體   English   中英

如何使用兩個或更多鍵實現 hash function?

[英]How do I implement a hash function with two keys or more?

我目前在 C++ 從事數據結構和算法學期項目。 我想實現一個 hash function 來使用他的姓名(字符串)和他的電話號碼(整數)訪問一個人的數據。 我還計划使用開放尋址處理沖突(如果此信息相關)。 另外,我不允許使用任何 STL 庫函數。

一般的做法是:

  1. 將數據序列化為 stream 字節。
  2. 創建結果字節緩沖區的std::string_view並使用其 hash

步驟 1 的有效解決方案可能難以實施,因為 C++ 沒有標准的數據序列化方法。 一個簡單但非最佳的解決方案是簡單地轉換為文本字符串,在這種情況下我們也不需要字符串視圖。

在您的示例中,您可以使用:

std::string data = name + std::to_string(phone);
std::size_t hash = std::hash<std::string>{}(data);

通過定義一個通用的 hash function,您可以 stream 單獨對象的字節,而無需先將它們存儲在連續的緩沖區中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM