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