以下代碼snippet可以對字符串對象做散列值。我想獲得散列值一個二進制字符串(一個指針和長度)。我知道我可以用指針和長度來形成一個字符串對象,但是僅僅爲此而形成一個字符串會產生額外的開銷。不知道是否可以使用帶有兩個參數的std散列函數:指針和長度。快速訪問散列函數(不使用字符串對象)
謝謝。
#include <iostream>
#include <functional>
#include <string>
int main()
{
std::string str = "Meet the new boss...";
std::hash<std::string> hash_fn;
std::size_t str_hash = hash_fn(str);
std::cout << str_hash << '\n';
}
爲保存指針和長度的自定義類專門化std :: hash? –
感謝@RichardHodges的評論,你最終需要調用'std :: hash()'來獲取散列值嗎? –
packetie
@codingFun - 你可能想看看[這個答案的另一個問題](http://stackoverflow.com/a/11639305/597607),看看你多少時間通過不構建一個簡短的'std :: string' - 約1ns。 –