繁体   English   中英

C ++中优先级队列的结构排序条件

[英]Struct ordering criteria of a priority queue in C++

我想知道是否可以使用相同的结构但使用不同的排序标准来排序两个不同的priority_queues(stl)。 想象一下:

struct stuff {
  int a, b;
}

priority_queue<stuff> a;
priority_queue<stuff> b;

请注意,这不是C ++的功能代码,只是伪代码。 然后,我想知道a和b的顺序是否可能不同,一个在队列开始处具有最大的填充物a。而另一个在填充物最大的填充物b中。

非常感谢你!

std :: priority_queue上的文档提供了一个示例如何使用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 );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM