【发布时间】:2017-04-13 15:49:17
【问题描述】:
下面的语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我不熟悉(*) 部分。任何解释都会很棒。谢谢
【问题讨论】:
-
这将是使用 typedef 使代码更具可读性和可维护性的好地方。
下面的语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我不熟悉(*) 部分。任何解释都会很棒。谢谢
【问题讨论】:
这是一个函数指针。您可以在此处进一步了解它,例如: http://www.cprogramming.com/tutorial/function-pointers.html
【讨论】:
它是一个函数指针,更准确地说bool (*) (element *, element *)是一个函数指针的类型。在这种情况下,它是一个接受两个element 指针并返回一个bool 的函数。
当你看到它被用作函数参数时它更有意义,那么它将在第一个* 之后有一个名称。例如bool (*fun) (element *, element *)。
【讨论】:
bool (*) (element *, element *) 命名函数指针的类型,其中函数接受两个element* 指针作为参数并返回一个bool。
【讨论】:
第二个模板参数是函数指针,旨在比较 2 个element*。如果您将此类函数指针放在 std::set 的构造函数中 - 您将能够使用自定义比较函数(或不使用重载 operator
【讨论】:
这里表示第二个模板参数是函数指针:
bool (*) (element *, element *)
是“指向一个函数的指针,该函数接受两个element*s 并返回bool”。
您还可以看到(*) 与指向数组的指针有关;
int (*) [32]
是类型“指向 32 个ints 数组的指针”。
【讨论】: