【发布时间】:2016-07-13 11:27:19
【问题描述】:
我需要为我的项目实现以下数据结构。我有一个关系
const MyClass*
到
uint64_t
对于每个指针,我想保存一个与之连接的计数器,它可以随着时间的推移而改变(实际上只是递增)。这没问题,我可以简单地将它存储在 std::map 中。问题是我需要快速访问具有最高值的指针。
这就是为什么我得出使用 boost::bimap 的结论。它为我的项目定义如下:
typedef boost::bimaps::bimap<
boost::bimaps::unordered_set_of< const MyClass* >,
boost::bimaps::multiset_of< uint64_t, std::greater<uint64_t> >
> MyBimap;
MyBimap bimap;
这可以正常工作,但我不能修改插入一次的对上的 uint64_t 是对的吗?文档说 multiset_of 是常量,因此我无法更改 bimap 中的 pair 值。
我能做什么?更改此 bimap 中一个键的值的正确方法是什么?或者有没有更简单的数据结构可以解决这个问题?
【问题讨论】:
-
听起来像是优先队列。
-
想象一下,如果右侧的键是可变的,那么维护索引完整性所需的代码......
-
您可以更改优先级队列中的优先级吗?是否可以访问前 N 个值?
-
@HendrikGruß en.cppreference.com/w/cpp/container/priority_queue
标签: c++ boost data-structures stl bimap