問題タブ [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.
java - Java:GoogleコレクションのHashBiMapをインスタンス化します
私はEclipseを使用してgoogle-collect.1.0-rc2.jar
おり、参照ライブラリとして追加しました。しかし、どういうわけか、これはまだ機能しません:
Eclipseでは次のエラーが発生します。
この行に複数のマーカー
- HashBiMapを解決できません
- Character.Integerを解決できません
- トークン"、"、"。"の構文エラー 期待される
- トークン「。」の構文エラー、このトークンを削除します
- メソッドcreate()は、クラスOdpに対して未定義です。
私は何が間違っているのですか?
ジョイナーのような他のグーグルのものはうまく機能します。(ただし、Joinerはジェネリックではありません。)
java - Java で Google コレクションの BiMap をインスタンス化するには
Bimap
Google コレクションのインスタンスを作成するにはどうすればよいですか?
質問Java: Instantiate Google Collection's HashBiMapを読みました
私のコードのサンプル
私は得るcannot instantiate the type BiMap<String, Integer>
。
c++ - C++ での Boost Bimap の使用
C++ Boost には双方向マップである Bimap コンテナがあります: http://www.boost.org/doc/libs/1_43_0/libs/bimap/doc/html/index.html
Boost::bimap のパフォーマンスを知っている人はいますか? つまり、マップ内の要素にアクセスする時間の複雑さはどれくらいですか? unordered_map アクセス (O(1)) と同じくらい速いですか?
ありがとう!
c++ - Loki の AssocVector のように実装されていますが、Boost の Bimap の機能を備えたものはありますか?
Loki の AssocVector (要素の参照の局所性、マップと比較して要素ごとのメモリ オーバーヘッドが低い) によって提供されるパフォーマンス特性を持ちながら、Boost の BiMap 機能 (からマップをクエリできる) を備えたライブラリ コードを誰かが知っているのだろうか関係の両側)?
または、並べ替えられた std::vector の std::pairs を使用し、ペアのいずれかの要素をキーとして使用してベクトルを検索する機能を追加することは、今後の方法ですか?
c++ - ベクトルとハッシュテーブルをBoost.Bimapに置き換えます
vector<string>
前者のインデックスへのaとboost::unordered_map<string, size_t>
マッピング文字列を。に置き換えたいと思っていboost::bimap
ます。
どのインスタンスbimap
を使用する必要がありますか?これまでのところ、私は思いついた
しかし、今コレクションタイプを逆にしたかどうかはわかりません。また、リレーションタイプのコレクションを変更する必要があるのではないかと思います。vector_of_relation
私の最良の選択でしょうかset_of_relation
、それともデフォルトで行くのでしょうか?
java - 2 つまたは複数の要素間の直接または逆の関係を表すのに最適な Guava (Google) コレクション API は何ですか?
BiMap には逆メソッドがありますが、問題に使用する正しいコレクションかどうかはわかりません。誰かが別のアプローチまたはコレクション/方法を提案できますか? 例が役に立ちます。
前もって感謝します。プラカシュ
c++ - c++11 に Boost.Bimap の代替手段はありますか?
C++0x で Boost のバイマップに代わる使用可能な方法はありますか?
Boost は避けたいのですが、C++11 を完全に採用しています。必要に応じて、プログラム全体で Boost の bimap のスリム化されたバージョンが機能します (enum と対応する文字列を切り替えるには定数 bimap が必要です)。マップはコンパイル時に一定であるため、2 つの手動で管理されたマップでさえ最適なソリューションではない可能性があります。
ありがとう!
更新: The Code Project でこれを見つけましたが、ライセンスに問題があるようです: http://www.codeproject.com/KB/stl/bimap.aspx?fid=12042&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr =151#xx0xx
私はクリーンで簡単な解決策を探しています (私の場合、2 つの mirrorred マップは同じように問題ないため、1 つのヘッダー/ソース ファイルまたは少し追加します)。
c++11 - Variadic typedefs、または「C++0x の方法で行われた Bimaps」
短い質問: 可変引数パックを型定義できますか? が必要template <typename ...T> struct Forward { typedef T... args; };
です。
長いバージョン:
C++0x で優れたブースト バイマップを再実装することを考えていました。2 つのタイプの bimapS
とT
がとの間std::set
の関係であることを思い出してください。オブジェクト自体は 2 つの独立した内部コンテナーに格納され、リレーションは関連付けられた反復子を追跡します。どちらのタイプも、「左」および「右」ルックアップを介してキーとして機能できます。内部コンテナの選択に応じて、値が一意である場合とそうでない場合があります。たとえば、左のコンテナがセットで右のコンテナがマルチセットの場合、多くの異なる にマップでき、右のルックアップで等しい範囲が得られます。人気のある内部コンテナは、、およびであり、おそらくS x
T y
x
y
set
multiset
vector
list
unordered_*
バージョンも。
したがって、テンプレート パラメーターとして 2 つのコンテナーを受け入れる型が必要です。
しかし、コンテナは任意の数の引数を取ることができることを受け入れる必要があるため、それらもすべて渡す必要があります。可変引数のセットが1 つだけ必要な場合は、それらを直接渡すことができるため、問題にはなりません。しかし、ここでは2組の引数が必要なので、次のように使用するフォワーダーを書きたいと思います。
私が思いついたテンプレートは次のとおりです。
残念ながら、指定された行ではForward
、パラメーター パックを typedef する方法がわかりません! (コメント行でコンパイラ エラーが発生します。)
[怠惰なバージョンを使用してandBimap<std::set<int, MyPred>, std::multiset<char, YourPred>> x;
を介して型を抽出することもできると思いますが、キーの型を主要なテンプレート引数にして、コンテナーへのデフォルト設定を許可できればもっといいと思いました。]LeftCont::value_type
RightCont::value_type
std::set
c++ - boost::bimapでカスタムアロケータを使用する
BoostGraphLibraryとの両方を使用するプログラムのパフォーマンスの向上に取り組んでいますboost::bimap
。プロファイリングにより、ほとんどの時間がメモリの割り当てと割り当て解除に費やされていることが明らかになりました。adjacency_list
グラフライブラリのクラスを使用するようにすると、boost::fast_pool_allocator
パフォーマンスが大幅に向上します。残りのメモリ割り当ての大部分はで発生するboost::bimap
ため、そこでカスタムアロケータを使用して実験したいと思いました。ドキュメントには、アロケータをバイマップの最後のテンプレートパラメータとして指定できると記載されていますが、アロケータ自体のテンプレート引数のタイプについては記載されていません。たとえば、タイプX
とY
、
何を記入する必要がありZ
ますか?
boost - 値でマップをトラバースする方法
マップがあるとしましょう:typedef map<int, string> MyMap;
たとえば、次のように文字列でトラバースしたいと思います。
1 つの方法は、このマップをその値でソートすることです。しかし、これは find() の効率に影響を与えるのではないかと心配しています (本当ですか?)
もう 1 つの選択肢は、 を使用することboost::bimap
です。しかし、お気づきかもしれませんが、MyMap の値は一意ではないため、bimap はここでは適用できません。
それを行う良い方法はありますか?