C++ 在c++;
我试图使用标准库优先级队列对自定义类的对象进行排序C++ 在c++;,c++,std,priority-queue,unordered-map,C++,Std,Priority Queue,Unordered Map,我试图使用标准库优先级队列对自定义类的对象进行排序Foo。但是,比较元素取决于它们在无序映射中映射到的值 我正试图构建这样的东西: std::unordered_map<Foo,double> map; struct Compare { bool operator()(const Foo& a, const Foo& b) { return map[a]<map[b]; } } std::priority_queue<Foo,std
Foo
。但是,比较元素取决于它们在无序映射中映射到的值
我正试图构建这样的东西:
std::unordered_map<Foo,double> map;
struct Compare {
bool operator()(const Foo& a, const Foo& b) {
return map[a]<map[b];
}
}
std::priority_queue<Foo,std::vector<Foo>,Compare> queue;
std::无序地图;
结构比较{
布尔运算符()(常量Foo&a、常量Foo&b){
return map[a]您可以将对map
的引用存储为Compare
的成员变量
您可以使用lambda而不是命名函数对象来删除一些样板文件:
auto compare = [&map](const auto& a, const auto& b) {
return map[a]<map[b];
};
std::priority_queue<Foo,std::vector<Foo>,decltype(compare)> queue(compare);
auto-compare=[&map](常数自动&a,常数自动&b){
返回地图[a]