0
我想創建一個自定義類型的哈希,我已經看到了,我必須寫類似爲什麼我們需要額外的()在std :: hash <sometype>()(somevalue)?
template <>
struct hash<MyClass>
{
std::size_t operator()(const MyClass& key) const
{
return std::hash<int>()(key.getID());
}
};
代碼工作,但我不understant爲什麼我必須寫
std::hash<int>()(key.getID());
而不是
std::hash<int>(key.getID());
中間()
運算符是什麼意思?我使用的是Visual Studio 2013,我試圖看到std::hash
的源代碼,但我不夠好,不能很好地理解它...
或通過'自動X =標準::哈希(); auto h = x(key.getID());'更明顯的是第二個語句中的'x'可以被替換爲'std :: hash ()'。 –
Pixelchemist
謝謝。所以我的錯誤假設哈希定義爲模板函數而不是類型。 – Jepessen
@Jepessen我想是的。 'struct whatever {...};'''whatever'是一種類型(或者是一個類型的模板,如果前面有'tempate' –
juanchopanza