問題タブ [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.

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

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ビットタイプをこのマップで動作させたいのですが。私が台無しにしていることに関するヒント、またはこれを行うためのより良い方法はありますか?

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

c++ - g++ リンカー エラー: std::hash の未定義参照エラーの取得

コードで TR1 実装の unordered_map を使用していますが、リンカが解読できない奇妙なエラーを返します。

これはエラーであり、それが向けられている行を検出することさえできませんか? 声明から:

`std::hash::operator()(DottedRule) const' への未定義の参照

ハッシュの使用法についてだと思います。さて、コード全体が大きすぎます (それでも見たい場合は、後で投稿するかもしれません) が、関連する部分は次のとおりです。

私が含めた最後の行は、ハッシュが使用されている唯一の場所です。何が起こっているのでしょうか?

どうもありがとう、オヌール

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

c++ - 挿入の順序を保持するC++ハッシュマップ

私は次のコードを持っています:

ただし、後で挿入されたのと同じ順序で要素を反復処理できるように、順序を保持するものを探しています。私のコンピューターでは、上記のコードは順序を保持せず、次のように出力します。

多分私は使用できると思いましたboost::multi_index_container

イテレータが挿入の順序に従うように、このコンテナ(または他の適切なコンテナ)を使用して元のコードを実装する方法を誰かに教えてもらえますか?

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

c++ - C++unordered_mapの問題

今回は完全なコードを表示できます。

これは以下を出力します:

何が起こっているのか分かりますか?

よろしくお願いします、、
Onur

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

c++ - unordered_mapのカスタムハッシュ関数と等式関数の定義

カスタムハッシュ関数と等価比較関数を持つunordered_mapのタイプを定義しようとしています。これらの関数の関数プロトタイプは次のとおりです。

これらの関数プロトタイプを宣言してから、次のように型を宣言しようとします。

ただし、VertexSetHashFunctionとSetEqualは有効なテンプレートタイプの引数ではないということです。テンプレート引数がどのタイプであるかを正確に示していないため、ドキュメントは混乱しています-ここで行ったように関数を与えることになっているだけですか、それとも関数をカプセル化する他の種類のオブジェクトがあります(ドキュメントは「ハッシュ関数オブジェクトタイプ」について話しますか?

0 投票する
15 に答える
241140 参照

c++ - 些細なキーの場合、unordered_map よりも map を使用する利点はありますか?

C++に関する最近の話で、ルックアップの効率 (償却された O(1)O(log n) ) のために、以前に使用したほとんどの場合にunordered_map使用する必要があることに気付きました。ほとんどの場合、マップを使用します。キー タイプとしてまたはを使用します。したがって、ハッシュ関数の定義に問題はありません。考えれば考えるほど、単純な型のキーの場合に a の上に aを使用する理由が見つからないことに気づきました。インターフェイスを調べたところ、何も見つかりませんでした。私のコードに影響を与える重要な違い。unordered_mapmapintstd::stringstd::mapstd::unordered_map

したがって、質問: andのような単純な型の場合にstd::mapoverを使用する本当の理由はありますか?std::unordered_mapintstd::string

私は厳密なプログラミングの観点から質問しています。それは完全には標準と見なされておらず、移植に問題を引き起こす可能性があることを知っています。

また、正しい答えの 1 つは、オーバーヘッドが小さいため、 「小さいデータ セットの方が効率的である」ということになると思います (それは本当ですか?)。 keys は自明ではありません (>1 024)。

編集: 当たり前のことを忘れていました(GManに感謝します!)-はい、もちろんマップは順序付けられています-私はそれを知っており、他の理由を探しています。

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

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であり、別の方法でテンプレート化されています。

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

c++ - unordered_map の反復子の効率 (C++)

これに関する情報が見つからないようなので、stackoverflow を参照します。C++のstd::tr1::unordered_mapの反復子はどのくらい効率的ですか? 特に、たとえばリスト イテレータと比較すると。効率的な反復を可能にするために、リスト内のすべてのキーも保持するラッパー クラスを作成することは理にかなっていますか (私のコードでは、unordered_map 内のキーに対して多くの反復を使用しています)。ブーストをお勧めする人には、(何らかの理由で)使用できません。

0 投票する
3 に答える
881 参照

c++ - ハッシュマップにできることはありますが、マップにはできませんか?

ハッシュマップとマップの違いは、ハッシュマップはハッシュ関数で実装されていますが、マップはツリーで実装されていることだけを知っています。体はこれ以上何か追加できますか?

これに基づいて、ハッシュマップはできるがマップはできないことはありますか?

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

c++ - 他の文字列で文字列にインデックスを付ける

特定の文字列を他の文字列でインデックス付けする必要がありますが、そのための良い方法が本当に見つかりません。tr1::unordered_map を使用しようとしましたが、使用に問題があります。誰かがそれを行うための最良の方法を教えてくれたら、本当に感謝しています:)オブジェクトを番号でインデックス付けする必要もあります(番号は順番に並んでいないため、ベクトルを使用できません)