我有POD结构实例形式的数据。在“正常”条件下,我需要通过唯一ID访问它们,目前通过std::map
。但是,如果出现问题,我需要按照POD结构的特定成员提供的顺序遍历数据。
我不想在发生错误的情况下将地图的所有数据集复制到优先级队列 - 这似乎非常昂贵。
我尝试在std::make_heap
上运行std::map
,但这甚至都没有编译,因为无法减去map
的迭代器。
排序键会定期更改,因此将数据保存在优先级队列中只是将指针存储在地图中似乎不可行,尤其是当通过地图访问时(典型的用例)变得更加昂贵通过间接。
反过来说,即将指针存储在可以按需堆积的单独数据结构中似乎是可行的,但同步可能容易出错。
std
库,boost或tbb中有什么可以实现我想要的吗?