問題タブ [bimap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
339 参照

c++ - バイマップの効率的な検索

私はbimap約の長さを持っています。280000 で、これbimapを少なくとも 1800 万回検索して値を求めています。bimap私が持っている最小限の例を以下に示します。

bimap1800万回の検索には約7秒かかります。検索時間を改善する方法を知りたいです。もう 1 つは、 と が unordered_set_of<>あるため、とを使用する場合よりも高速unordered_multiset_of<>に作成でき、検索時間は約 1 秒です。どちらの場合も同じです。また、長さを1 億 7000 万まで延長したいと考えています。5億回。では、検索時間を改善するにはどうすればよいでしょうか。bimapset_of<>multiset_of<>bimap

unordered_map<>双方向アクセスが必要なため、解決策ではありません。

0 投票する
1 に答える
221 参照

c++ - ビュー値の反対側とは異なるキーを持つビューの片側で C++ bimap は可能ですか? どうやってするか?

最初はマップが必要だったので、std::map を使用しました。
次に、いくつかの要件が追加され、「値」の「キー」(バーの foos)も取得する必要があったため、使用しました

その後、さらにいくつかの要件が追加されたため、すべての 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")