gpt4 book ai didi

c++ - 为什么我们需要在 std::hash()(somevalue) 中添加 ()?

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:39 25 4
gpt4 key购买 nike

我想为自定义类型创建一个散列,我发现我必须写类似的东西

template <>
struct hash<MyClass>
{
std::size_t operator()(const MyClass& key) const
{
return std::hash<int>()(key.getID());
}
};

代码有效,但我不明白为什么我必须写

std::hash<int>()(key.getID());

代替

std::hash<int>(key.getID());

中间的()操作符是什么意思?我使用的是 Visual Studio 2013,我试图查看 std::hash 源代码,但我还不够好,无法很好地理解它...

最佳答案

std::hash<int>是一种类型。 std::hash<int>()是该类型的对象。 std::hash<int>()(key.getID());电话 operator()在那个物体上。

如果对象不是临时的,可能更容易理解:

std::hash<int> x;
auto h = x(key.getID());

关于c++ - 为什么我们需要在 std::hash<sometype>()(somevalue) 中添加 ()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com