Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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++;_C++_Stl_Std_Priority Queue - Fatal编程技术网

C++ C++;

C++ C++;,c++,stl,std,priority-queue,C++,Stl,Std,Priority Queue,我想知道是否有可能订购两个具有相同结构但具有不同排序标准的不同优先级队列(stl)。想象一下: struct stuff { int a, b; } priority_queue<stuff> a; priority_queue<stuff> b; struct stuff{ INTA,b; } 队列a的优先级; 优先级队列b; 注意,这不是C++的函数代码,只是伪代码。然后,我想知道a和b的顺序是否可能不同,一个是最大的,a在队列的开始,另一个是最大的 多谢各

我想知道是否有可能订购两个具有相同结构但具有不同排序标准的不同优先级队列(stl)。想象一下:

struct stuff {
  int a, b;
}

priority_queue<stuff> a;
priority_queue<stuff> b;
struct stuff{
INTA,b;
}
队列a的优先级;
优先级队列b;

注意,这不是C++的函数代码,只是伪代码。然后,我想知道a和b的顺序是否可能不同,一个是最大的,a在队列的开始,另一个是最大的

多谢各位

有关的Marc

文档中有一个如何使用lambda的示例,因此只需创建其中两个:

struct stuff {
  int a, b;
};

void foo() 
{
    auto cmpBiggerA = []( const stuff &s1, const stuff &s2 ) { return s1.a > s2.a; };
    auto cmpBiggerB = []( const stuff &s1, const stuff &s2 ) { return s1.b > s2.b; };

    priority_queue<stuff,std::vector<stuff>,decltype(cmpBiggerA)> a( cmpBiggerA );
    priority_queue<stuff,std::vector<stuff>,decltype(cmpBiggerB)> b( cmpBiggerB );
}
struct stuff{
INTA,b;
};
void foo()
{
auto-cmpBiggerA=[](常量stuff&s1,常量stuff&s2){返回s1.a>s2.a;};
auto-cmpBiggerB=[](常量stuff&s1,常量stuff&s2){返回s1.b>s2.b;};
优先级队列a(cmpBiggerA);
优先级队列b(cmpBiggerB);
}

优先级队列模板的参数之一是排序函数-因此提供不同的排序函数。看见