Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中的优先权、队列和排序的函子与函数_C++_Function_Templates_Functor - Fatal编程技术网

C++中的优先权、队列和排序的函子与函数

C++中的优先权、队列和排序的函子与函数,c++,function,templates,functor,C++,Function,Templates,Functor,我试图理解函子和函数在C中的用法++ 请参阅下面的代码 包括 包括 包括 包括但不理解它 您能帮助我吗?当您实例化优先级队列时,第三个参数必须是类型。 greater和myClass是类型;greater和mySort不是。 如果您创建一个默认优先级队列,它将默认初始化指定类型的排序 priority_queue<int, vector<int>, greater<int>> aa; 相当于 priority_queue<int, vector<

我试图理解函子和函数在C中的用法++

请参阅下面的代码

包括 包括 包括 包括但不理解它

您能帮助我吗?

当您实例化优先级队列时,第三个参数必须是类型。 greater和myClass是类型;greater和mySort不是。 如果您创建一个默认优先级队列,它将默认初始化指定类型的排序

priority_queue<int, vector<int>, greater<int>> aa;
相当于

priority_queue<int, vector<int>, greater<int>> aa(greater<int>());
priority_queue<int, vector<int>, myClass> cc(myClass());
sort<vector<int>::iterator, bool(int,int)>(check.begin(), check.end(), mySort);
sort<vector<int>::iterator, myClass>(check.begin(), check.end(), myClass());
相当于

priority_queue<int, vector<int>, greater<int>> aa(greater<int>());
priority_queue<int, vector<int>, myClass> cc(myClass());
sort<vector<int>::iterator, bool(int,int)>(check.begin(), check.end(), mySort);
sort<vector<int>::iterator, myClass>(check.begin(), check.end(), myClass());
实例化优先级队列时,第三个参数必须是一个类型。 greater和myClass是类型;greater和mySort不是。 如果您创建一个默认优先级队列,它将默认初始化指定类型的排序

priority_queue<int, vector<int>, greater<int>> aa;
相当于

priority_queue<int, vector<int>, greater<int>> aa(greater<int>());
priority_queue<int, vector<int>, myClass> cc(myClass());
sort<vector<int>::iterator, bool(int,int)>(check.begin(), check.end(), mySort);
sort<vector<int>::iterator, myClass>(check.begin(), check.end(), myClass());
相当于

priority_queue<int, vector<int>, greater<int>> aa(greater<int>());
priority_queue<int, vector<int>, myClass> cc(myClass());
sort<vector<int>::iterator, bool(int,int)>(check.begin(), check.end(), mySort);
sort<vector<int>::iterator, myClass>(check.begin(), check.end(), myClass());

不是bug,但返回a>b;是这些函数中所需的全部。mySort不排序,但比较。morer是一种类型,morer是一种函数类型函数,不带任何参数,根据上下文返回morer或实例。因此,区别主要与int,int,42之间的区别相同。提示:使用名称空间std;这是一个坏习惯,如果你现在能戒掉,将来可能会避免很多头痛。std::prefix的存在是有原因的:它避免了与您自己的类、结构和变量的冲突。@tadman您的话非常有用,因为我是新手。非常感谢你!不是bug,但返回a>b;是这些函数中所需的全部。mySort不排序,但比较。morer是一种类型,morer是一种函数类型函数,不带任何参数,根据上下文返回morer或实例。因此,区别主要与int,int,42之间的区别相同。提示:使用名称空间std;这是一个坏习惯,如果你现在能戒掉,将来可能会避免很多头痛。std::prefix的存在是有原因的:它避免了与您自己的类、结构和变量的冲突。@tadman您的话非常有用,因为我是新手。非常感谢你!我完全理解!非常感谢你!!函数类型越大,优先级越高;也会是最烦人的解析。mySort会衰减到指针,所以bool*int,int。我完全理解它!非常感谢你!!函数类型越大,优先级越高;也会是最麻烦的解析。mySort会衰减到指针,所以bool*int,int。