0

最初はマップが必要だったので、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")

4

1 に答える 1