Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++_Map_Priority Queue - Fatal编程技术网

C++ 值上具有类似队列属性的关联容器

C++ 值上具有类似队列属性的关联容器,c++,map,priority-queue,C++,Map,Priority Queue,我有POD结构实例形式的数据。在“正常”条件下,我需要通过唯一的ID访问它们,当前是通过std::map。但是,如果出现问题,我需要按照POD结构的特定成员提供的顺序遍历数据 我不想在出错的情况下将映射的所有数据集复制到优先级队列中——这似乎代价高昂 我试着在std::map上运行std::make_heap,但这甚至无法编译,因为map的迭代器无法减去 排序键将定期更改,因此将数据保持在优先级队列中,并仅在映射中存储指针似乎不可行,特别是当通过映射(典型用例)进行访问时,间接寻址会变得更昂贵

我有POD结构实例形式的数据。在“正常”条件下,我需要通过唯一的ID访问它们,当前是通过
std::map
。但是,如果出现问题,我需要按照POD结构的特定成员提供的顺序遍历数据

我不想在出错的情况下将映射的所有数据集复制到优先级队列中——这似乎代价高昂

我试着在
std::map
上运行
std::make_heap
,但这甚至无法编译,因为
map
的迭代器无法减去

排序键将定期更改,因此将数据保持在优先级队列中,并仅在映射中存储指针似乎不可行,特别是当通过映射(典型用例)进行访问时,间接寻址会变得更昂贵

另一种方法是,将指针存储在单独的数据结构中,可以根据需要进行重配置,这似乎是可行的,但同步可能容易出错


std
库、boost或tbb中是否有任何东西可以实现我想要的功能?

看起来这是一项为客户服务的工作。

不确定是否有帮助,但您是否检查了?@rodrigo除了使用
const
的一些有趣的功能外,就是它。把它作为答案贴出来,我会接受的。