プロジェクトに次のデータ構造を実装する必要があります。の関係があります
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 でペアの値を変更することはできません。
私に何ができる?このバイマップの 1 つのキーの値を変更する正しい方法は何ですか? または、この問題に対して可能な単純なデータ構造はありますか?