以下语法是什么意思?
set<element*, bool (*) (element *, element *)> * getNumbers();
我对(*)
这个部分不熟悉。希望能够给我一些解释,谢谢。
这里意味着第二个模板参数是一个函数指针:
bool (*) (element *, element *)
是指向接受两个 element*
并返回 bool
的函数的指针。
您还可以在指向数组的指针中看到 (*)
;
int (*) [32]
这是类型“指向包含32个 int
的数组”的指针。
这是一个函数指针,更准确地说,bool (*) (element *, element *)
是函数指针的类型。在这种情况下,它是一个接受两个 element
指针并返回一个 bool
的函数。
当你将其用作函数参数时,第一个 *
后面会有一个名称,这样更容易理解。例如,bool (*fun) (element *, element *)
。
这是一个函数指针。你可以在这里进一步阅读相关内容,例如: http://www.cprogramming.com/tutorial/function-pointers.html
bool (*) (element *, element *)
是一个函数指针类型的名称,其中该函数接受两个element*
指针作为参数,并返回一个bool
值。
第二个模板参数是函数指针,旨在比较2个element*
。如果您将这样的函数指针放入std::set的构造函数中,则可以创建具有自定义比较函数(或没有重载运算符<)的元素集。