正如在std::hash上所述,std::散列函数的实例满足某些属性。其中之一,属性4完全如下:对于两个相等的参数k1和k2,std::hash<Key>()(k1) == std::hash<Key>()(k2)
在哪里可以找到解释std::hash<Key>()(k1)的语义?
发布于 2022-02-06 18:51:15
在表达式std::hash()(k1)中,std::hash()部件构造一个对象,该对象具有为k1类型定义的operator(),然后立即调用k1上的operator()。一个令人困惑的事情是,std::hash是一个模板,在这样编写的表达式中,没有显式的类型,模板参数被推断为k1的类型。
基本上,要阅读这些代码,您需要注意存在并可以将任意参数类型重载为类的成员函数。。
这里需要()或std::hash之后的{}来实例化一个临时对象,如C++命名需求: DefaultConstructible。
https://stackoverflow.com/questions/71009637
复制相似问题