最初はマップが必要だったので、std::map を使用しました。
次に、いくつかの要件が追加され、「値」の「キー」(バーの foos)も取得する必要があったため、使用しました
boost::bimaps::bimap<
boost::bimaps::unordered_set_of<boost::bimaps::tagged<std::string, foo>>,
boost::bimaps::multiset_of<boost::bimaps::tagged<std::string, bar>>>
その後、さらにいくつかの要件が追加されたため、すべての foo の番号を保存する必要があり、右側のビューから<bimap>.righ.find(bar)
(foo + foo に保存されている番号) のペアを呼び出して取得できるようにする必要がありますが、それでも呼び出し<bimap>.left.find(foo)
てバーを取得できるようにしたい。
それを達成する方法は?可能であれば、ブーストよりも最新の C++ を使用したいと思いますが、ブーストなしでバイマップ機能を使用するのは難しいと思います。
編集:サイズが重要であることに注意する必要があるため、関連する部分を2回保存したくなく、速度も重要です。
"foo1"+100 <-> "bar1"
と
のようなものが必要"foo2"+300 <-> "bar4"
です。そして、「bar1」
を呼び出して取得できるようにしたいだけで
なく、ペア(「foo1」、100)も取得できるようにしたいと考えています。<bimap>.left.find("foo1")
<bimap>.right.find("bar1")