2017-05-27 60 views
1

我一直在阅读实现哈希表的C++代码。虽然它很清楚下面的代码是干什么的,但我无法理解那些花括号{}在那里做什么。我试图在网上查找它,但找不到任何东西,最有可能的是,即使这个表达的名字对我来说也是未知的。{}在函数调用中的参数之前表示什么? key_equal {}(key1,key2);

我认为它与std :: equal函数被typedef处理为key_equal有关,但正如我所说我找不到与之相关的任何东西。

这是家庭作业的一部分,是由我不知道的人写的,所以理解功能比讨论这样做的必要性更重要,尽管我会对这些问题进行评论。

提前致谢!

using key_equal = std::equal_to<key_type>; 

    bool equals(const key_type& key1, const key_type& key2) const { 

    return key_equal{}(key1, key2); } 

回答

2

key_equal{}实例化使用braced-init-list语法类型;该类型然后用两个参数实现operator(),并调用该运算符。

+0

从来没有告诉我,它是一个类,而不是一个函数,并正在初始化一个空的初始化列表。谢谢 –

+1

这里是更多的相关链接:[列表初始化](http://en.cppreference.com/w/cpp/language/list%20initialization)。 它不是'std :: initializer_list',因为它可以包含不同类型的内容,而是一个'braced-init-list'。 – HolyBlackCat

+0

谢谢,你是对的;我修复了这个链接。 – gimpf

相关问题