問題タブ [unordered-map]
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.
c++ - boost :: unordered_mapのキーにカスタムタイプを使用するにはどうすればよいですか?
現在、プロジェクトでBoostのハッシュマップの実装を使用しており、キーのカスタムタイプを実装しようとしています。キーとして使用する単一の128ビットデータ型に結合したい4つの符号なし整数があります。
4つの要素の32ビット整数配列を使用して構造体を作成しました。これはストレージとして機能します。正直なところ、Boostのハッシュマップがどのように機能するかわからないので、ここで何をしているのかわかりませんが、Boostのドキュメント(http://www.boost.org/doc/libs/1_37_0 )に従いました。 /doc/html/hash/custom.html)boost :: hashを拡張するために、ハッシュ関数とカスタム比較演算子を作成しました。
このカスタムタイプをヘッダーで定義しています。これは私のコードです:
Boostの順序付けされていないマップで実際にこのタイプを使用すると、コードはコンパイルされますが、リンクに失敗します。リンカは、いくつかのオブジェクトファイルでシンボルが複数回定義されていると主張しています。128ビットタイプをこのマップで動作させたいのですが。私が台無しにしていることに関するヒント、またはこれを行うためのより良い方法はありますか?
c++ - g++ リンカー エラー: std::hash の未定義参照エラーの取得
コードで TR1 実装の unordered_map を使用していますが、リンカが解読できない奇妙なエラーを返します。
これはエラーであり、それが向けられている行を検出することさえできませんか? 声明から:
`std::hash::operator()(DottedRule) const' への未定義の参照
ハッシュの使用法についてだと思います。さて、コード全体が大きすぎます (それでも見たい場合は、後で投稿するかもしれません) が、関連する部分は次のとおりです。
私が含めた最後の行は、ハッシュが使用されている唯一の場所です。何が起こっているのでしょうか?
どうもありがとう、オヌール
c++ - 挿入の順序を保持するC++ハッシュマップ
私は次のコードを持っています:
ただし、後で挿入されたのと同じ順序で要素を反復処理できるように、順序を保持するものを探しています。私のコンピューターでは、上記のコードは順序を保持せず、次のように出力します。
多分私は使用できると思いましたboost::multi_index_container
イテレータが挿入の順序に従うように、このコンテナ(または他の適切なコンテナ)を使用して元のコードを実装する方法を誰かに教えてもらえますか?
c++ - C++unordered_mapの問題
今回は完全なコードを表示できます。
これは以下を出力します:
何が起こっているのか分かりますか?
よろしくお願いします、、
Onur
c++ - unordered_mapのカスタムハッシュ関数と等式関数の定義
カスタムハッシュ関数と等価比較関数を持つunordered_mapのタイプを定義しようとしています。これらの関数の関数プロトタイプは次のとおりです。
これらの関数プロトタイプを宣言してから、次のように型を宣言しようとします。
ただし、VertexSetHashFunctionとSetEqualは有効なテンプレートタイプの引数ではないということです。テンプレート引数がどのタイプであるかを正確に示していないため、ドキュメントは混乱しています-ここで行ったように関数を与えることになっているだけですか、それとも関数をカプセル化する他の種類のオブジェクトがあります(ドキュメントは「ハッシュ関数オブジェクトタイプ」について話しますか?
c++ - 些細なキーの場合、unordered_map よりも map を使用する利点はありますか?
C++に関する最近の話で、ルックアップの効率 (償却された O(1)対O(log n) ) のために、以前に使用したほとんどの場合にunordered_map
使用する必要があることに気付きました。ほとんどの場合、マップを使用します。キー タイプとしてまたはを使用します。したがって、ハッシュ関数の定義に問題はありません。考えれば考えるほど、単純な型のキーの場合に a の上に aを使用する理由が見つからないことに気づきました。インターフェイスを調べたところ、何も見つかりませんでした。私のコードに影響を与える重要な違い。unordered_map
map
int
std::string
std::map
std::unordered_map
したがって、質問: andのような単純な型の場合にstd::map
overを使用する本当の理由はありますか?std::unordered_map
int
std::string
私は厳密なプログラミングの観点から質問しています。それは完全には標準と見なされておらず、移植に問題を引き起こす可能性があることを知っています。
また、正しい答えの 1 つは、オーバーヘッドが小さいため、 「小さいデータ セットの方が効率的である」ということになると思います (それは本当ですか?)。 keys は自明ではありません (>1 024)。
編集: 当たり前のことを忘れていました(GManに感謝します!)-はい、もちろんマップは順序付けられています-私はそれを知っており、他の理由を探しています。
c++ - 本番環境で std::tr1 を使用する価値はありますか?
私は MS VC 2008 を使用しており、一部のプロジェクトでは Intel C++ コンパイラ 11.0 を使用しています。本番環境で tr1 機能を使用する価値はありますか? 彼らは新しい基準にとどまりますか?
たとえば、今は を使用していますstdext::hash_map
。TR1 は を定義しますstd::tr1::unordered_map
。しかし、MS の実装unordered_map
は彼らのものstdext::hash_map
であり、別の方法でテンプレート化されています。
c++ - unordered_map の反復子の効率 (C++)
これに関する情報が見つからないようなので、stackoverflow を参照します。C++のstd::tr1::unordered_mapの反復子はどのくらい効率的ですか? 特に、たとえばリスト イテレータと比較すると。効率的な反復を可能にするために、リスト内のすべてのキーも保持するラッパー クラスを作成することは理にかなっていますか (私のコードでは、unordered_map 内のキーに対して多くの反復を使用しています)。ブーストをお勧めする人には、(何らかの理由で)使用できません。
c++ - ハッシュマップにできることはありますが、マップにはできませんか?
ハッシュマップとマップの違いは、ハッシュマップはハッシュ関数で実装されていますが、マップはツリーで実装されていることだけを知っています。体はこれ以上何か追加できますか?
これに基づいて、ハッシュマップはできるがマップはできないことはありますか?
c++ - 他の文字列で文字列にインデックスを付ける
特定の文字列を他の文字列でインデックス付けする必要がありますが、そのための良い方法が本当に見つかりません。tr1::unordered_map を使用しようとしましたが、使用に問題があります。誰かがそれを行うための最良の方法を教えてくれたら、本当に感謝しています:)オブジェクトを番号でインデックス付けする必要もあります(番号は順番に並んでいないため、ベクトルを使用できません)