Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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++_Std_Priority Queue_Unordered Map - Fatal编程技术网

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]