C++ 標準庫中的 std::hash (也稱為 STL Hash)是一個函數對象,主要用于計算哈希值。它是非常通用的,可以用于任何可哈希的類型,例如整數、浮點數、字符串等。
使用 std::hash 的步驟如下:
包含頭文件。
聲明 std::hash 對象或使用 std::hash 模板函數,將值傳遞給它后,即可計算出哈希值。
例如,以下代碼演示如何使用 std::hash 計算字符串 “Hello, world!” 的哈希值:
#include <iostream>
#include <functional>
#include <string>
int main() {
std::hash<std::string> hasher;
std::size_t hash_value = hasher("Hello, world!");
std::cout << hash_value << std::endl;
return 0;
}
輸出結果將是一個在 std::size_t 范圍內的整數,例如:
13852327417439285925
除此之外,std::hash 還可以作為其他容器類型的哈希函數,例如 std::unordered_map 和 std::unordered_set:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int, std::hash<std::string>> word_count;
word_count["hello"] = 1;
word_count["world"] = 2;
std::cout << word_count["world"] << std::endl; // 輸出 2
return 0;
}
需要注意的是,如果要使用 std::hash 作為其他容器類型的哈希函數,還需要提供一個相等性比較函數,因為哈希函數只能計算出一個哈希值,而無法比較兩個值是否相等。