转换为模板类型

aji*_*.mk 3 c++ syntax

Stroustrup教授在他的书"The C++ Programming Language 4th ed"中使用了什么语法.虽然在第917页描述了散列和相等函数.

std::hash<int>{}(variable) //variable is of type int
Run Code Online (Sandbox Code Playgroud)

这是从int到hash的转换吗?哈哈之后为什么那些花括号呢?我知道在变量默认值之后放置它们会初始化它.至于铸造方面,我们通常像双人(int)一样投!

Som*_*ude 8

让我们分解std::hash<int>{}(variable)成它的组成部分:

  • std::hash<int>- 这是类型,它是特定类型的标准哈希模板.

  • {}- 这会创建一个std::hash<int>类的实例.

  • (variable)- 这将调用先前创建的实例上的函数调用运算符,并variable作为参数传递.

表达式之后,std::hash<int>对象的实例被破坏.

例如:

std::size_t hash = std::hash<int>{}(variable);
Run Code Online (Sandbox Code Playgroud)

大致相当于

std::size_t hash;
{
    std::hash<int> hashing_temporary_object;
    hash = hashing_temporary_object(variable);
    // The above call is equal to hashing_temporary_object.operator()(variable)
}
Run Code Online (Sandbox Code Playgroud)