問題タブ [multimap]

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 投票する
2 に答える
455 参照

c++ - 2つのマルチマップを定義するC++により、プログラムがクラッシュします

これは私を完全に神秘的にしています。クラス宣言には、次の2行があります。

コードは問題なくコンパイルされますが、実行すると次のエラーが発生します。

2つの変数が後でどのように処理されるかとは関係がないことを除けば、十分に単純なようです。コードの残りの部分で変数へのすべての参照を削除しましたが、それでもクラッシュしました。行の1つ(どちらか1つ)をコメントアウトしましたが、プログラムは問題なく実行されました。どちらの特定の変数でもエラーが発生しないのはなぜですか?私はSTLにバグがないことを前提に作業していますが、コードがこれをどのように実行できるかについてのアイデアが不足しています。

これは私を困惑させたので、あなたが提供できるどんな助けにも感謝します。ワイアット

編集:私はSTLに問題があることを示唆していません、それは私が少し気難しいだけでした。私はバグが私のコードにあることを知っています、私が知りたいのは-参照されていない変数を宣言するとそれがクラッシュする可能性があるのは何が間違っている可能性がありますか?なぜそれが私のコードに影響を与えるのでしょうか?

私のコードは数千行の長さなので、誰かがそれを読む価値はありません。私は正しい方向に私を向けてくれる人を探しています。

0 投票する
2 に答える
3499 参照

c++ - Boost multi_index_containerを使用して、挿入順序を保持します

最初はstd::multimap、同じキーを持つ多くの値を格納するためにを使用し始めましたが、同じキーを持つ値間の挿入順序が保持されないことがわかりました。 この回答は、で実行できると主張していますがboost::multi_index::multi_index_container、例はありません。ドキュメントを見ると、その使用法の例はありません。私は、あなたがこのことをどのように使用することになっているのかについて頭や尾を引くことはできません。あまり使用されていないBoostライブラリからのドキュメントが貧弱であると予想するようになりましたが、これで問題は解決します。誰かが私が望む方法でそれが使用されたことを示すチュートリアルや例を教えてもらえますか、あるいはおそらく自分自身で例を提供することさえできますか?

0 投票する
2 に答える
3209 参照

scala - Scala Immutable MultiMap

Scalaで書けるようになりたい

基になるMap[Owner、Set [Pet]]には、MapとSetの両方が不変である必要があります。コンパニオンオブジェクトを使用したImmutibleMultiMapの最初のドラフトは次のとおりです。

コメント行をエレガントに解決できますか?マップとセットの両方が不変になるはずです。

ありがとう!

0 投票する
5 に答える
9137 参照

java - パフォーマンスの良いマルチマップ

私のコードには、数秒で数千回も頻繁に使用されるマップがあります。もともと私は TreeMap を持っていましたが、9,000 エントリでテストすると、古いプロセッサが溶けるのが見えました。そして、これはスケーリングする必要があります。そのため、HashMap に移行したところ、パフォーマンスは優れていました。

現在、設計を変更しており、MultiMap を探しています。get()ただし、一致するキーを選択する大きなマップを反復処理する必要があり、何度も呼び出されても同期が遅いように見えるため、パフォーマンスへの影響が懸念されます。

このような大きな値を優れたパフォーマンスで処理できる優れた MultiMap はありますか? このアプリケーションではパフォーマンスが重要です。非常に大きなワークロードを処理する大きな個別のマップが多数存在する可能性があり、「小さな」パフォーマンスの損失が非常に大きな問題になる可能性があるからです。

依存関係なしで単独で動作するように抽出できる場合は、ボーナス ポイントです。

0 投票する
2 に答える
706 参照

c++ - マップのイテレータ

こんにちは私は次のようなオブジェクトを含むマップを作成しようとしています:class Employee >> Employeeから派生:次のクラスです:Worker、Manager、ViceManage。私のマップでは、オブジェクトEmployeeをchar*であるIDでソートしたいと思っています。次のようなマップを作成しようとしました。`

私は私のコードでたくさんの問題を抱えています私はあなたたちがthxを前もって言いたいことを聞きたいです

0 投票する
10 に答える
18756 参照

java - 高性能同時マルチマップ Java/Scala

高性能で同時実行可能な MultiMap を探しています。どこでも検索しましたが、ConcurrentHashMap (ハッシュ配列のセグメントのみをロックする) と同じアプローチを使用するソリューションを見つけることができません。

マルチマップは、頻繁に読み取られ、追加され、削除されます。

multimap キーは文字列で、その値は任意です。

特定のキーのすべての値を見つけるには O(1) が必要です。O(N) は削除しても問題ありませんが、O(logN) が優先されます。

特定のキーの最後の値を削除すると、メモリ リークが発生しないように、キーから値のコンテナーが削除されることが重要です。

編集:これが私が構築したソリューションです。ApacheV2で利用できます: インデックス(マルチマップ)

0 投票する
2 に答える
2103 参照

c++ - イテレータが何も立っていないかどうかを確認する方法

マルチマップstlを使用していますが、マップを反復処理しましたが、マップ内で必要なオブジェクトが見つかりませんでした。イテレータが必要なものを保持しているかどうかを確認したいのですが、問題が発生しています。 nullか何かではありません。ありがとう!

0 投票する
2 に答える
1341 参照

c++ - ネストされたベクトル/マルチマップ/マップのこの使用は大丈夫ですか?

次のシナリオに最適なデータ構造を探しています。

インデックスiがあり、それぞれについて次の操作をサポートする必要があります1Foo :オブジェクト(以下を参照)をすばやく検索します。各オブジェクトはdouble値に関連付けられています。

だから私はこれをしました:

しかし、次の操作に対しても非常に高速なサポートを提供する必要があるため、非効率的であることがわかります2 :およびFooに特定の値を持つすべてのを削除します(関連するdouble値と一緒に)。ab

この操作2を実行するには、ベクトル内のマップを反復処理し、Foosの値ab値を確認して、マップから1つずつ消去する必要があります。これは非常にコストがかかるようです。

だから私は今、代わりにこのデータ構造を検討しています:

これにより、上記の操作1と2の両方が高速にサポートされます。それは合理的ですか?ネストされたコンテナ構造からのオーバーヘッドはたくさんありますか?

注:各マルチマップには通常、(タイプの)1つまたは2つのキーしかなくFoo0、それぞれに(タイプの)約5〜20の値がありますstd::map<int,double>

0 投票する
4 に答える
812 参照

java - レースなしでConcurrentMultimapにremoveを実装する

私は並行マルチマップを作成する問題を検討してきましたが、 Google Guava AbstractSetMultimapと、ConcurrentHashMap上のセットビューとして値コレクションをオンデマンドで作成するMapMakerコンピューティングマップに裏打ちされた実装があります。ビューコレクションとさまざまなラッパーに注意を払うと、これはかなり近くなると思います。

これを試したの人によってすでに議論されている大きな問題は、競合状態を導入せずに、値コレクションが空になったときに、基になるマップから値コレクションを削除することであるように見えます。

いくつかのオプションが存在するようです。

  • 空のコレクションはそのままにしておきます。これにより一部のCHMがリークしますが、少なくとも正しいと思います。
  • 空のときにコレクションを削除し、他に何かが表示されている場合は補正するように楽観的に試してください。これは人種でいっぱいで、修正することは本質的に不可能のようです。
  • 値コレクションのすべてを同期します。これにより、少なくともこの削除が可能になりますが、キーによる最初のルックアップ後の同時実行が犠牲になります。
  • より小さなペナルティ(おそらく、使用パターンに応じて?)の場合、おそらく値コレクションの作成と削除で同期し、それがすべてをカバーしているかどうかを確認する必要があります。

質問:

  • これよりも優れた実装を知っている人はいますか?MapMakerのビットをより適切に作成できますか、それともゼロから作成された特殊なConcurrentHashMultimapが必要ですか?
  • これを大幅に改善することが難しい場合、このリークは実際には多くの問題になる可能性がありますか?java.util.HashMap、juc.ConcurrentHashMap、ArrayDequeなどの注目すべきコレクションは、バッキングストアのサイズを下方に変更しません。また、ArrayListは自動的にサイズを変更しません。オブジェクトをクリアする限り、これはあまり重要ではないかと思います。

ありがとう


編集:グアバメーリングリストのここでの議論も参照してください。


編集2:それ以来私はこれを書きました。実装については、このGoogleコードエリアをご覧ください。ここではなく、そこで試してみた人からのフィードバックをいただければ幸いです。

0 投票する
4 に答える
56474 参照

java - グーグルマルチマップを反復処理する方法

私はグーグルマルチマップを繰り返す必要があります。だが

  1. jdk 1.4を使用していますが、より高いバージョンに切り替えることができません。だから私は一般的な機能を使用することはできません。
  2. 私のマルチマップは、キーに対して複数の値を持つことができます。
  3. multimapの値自体がmultimapである場合があります