問題タブ [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 投票する
3 に答える
1689 参照

c++ - Key が T のメンバーである unordered_map の使用

unordered_map を使用して、一定の時間 (平均的なケース) でメンバー変数によってオブジェクトにアクセスできるようにする良い方法はありますか? 次の例にはこの機能がありますが、それぞれの名前をPersonキーとして複製する必要があります。

オブジェクトをハッシュしてアクセスするときに使用することを知る必要があるのではなく、どういうわけかそれ自体でvalue_typeある必要があると考えています。Personpair<string, Person>unordered_mapPerson::getName

理想的な解決策は、各オブジェクトのキーを取得するために使用することを知っているをセットアップできるようにすることですunordered_map(またはunordered_set、それが仕事により適している場合) 。Person::getName次に、オブジェクトを指定するだけでそれらを挿入し(キーの取得方法を知っているため、キーはありません)、の戻り値と等しいキーを指定してアクセスできますPerson::getName

次のようなもの:

では、これをうまく実行できるテンプレート クラスをインスタンス化することは可能unordered_mapでしょうか?

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

c++ - unordered_map / unordered_set のタプルの汎用ハッシュ

std::unordered_map<tuple<int, int>, string>箱から出してすぐに動作しないのはなぜですか? のハッシュ関数を定義しなければならないのは面倒ですtuple<int, int>

タプルをキーとして順序付けされていないマップを構築する(Matthieu M.) は、これを自動化する方法を示していますboost::tuple。可変個引数テンプレートを使用せずに c++0x タプルに対してこれを行う方法はありますか?

確かにこれは標準にあるはずです:(

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

c++ - unordered_map ハッシュ関数 c++

このように unordered_map を定義する必要があります。関数を定義してこのマップにunordered_map<pair<int, int>, *Foo>渡すための構文は何ですか?hashequal

私はそれにこのオブジェクトを渡そうとしました:

そして運がない:

私はそれが何をsize_type_Buskets意味するのか分からないので、私はそれを与えました1。それを行う正しい方法は何ですか?ありがとう。

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

visual-studio-2010 - vs2010 のデバッグ モードで boost:unordered_map の値を確認する方法

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

ご覧のとおり、マップの値はポインターです。マップ内の値を取得するにはどうすればよいですか。を使用する(*(ret[int]))[int]と、値を取得できないようです。私は何を間違っていますか?

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

java - 順序付けられていない (またはハッシュ) マップの反復子

私が理解している限りでは、ハッシュマップは O(1) 時間に近い時間で要素を見つけることができるため、標準マップよりも望ましいです。これは、ハッシュまたはキーを配列ルックアップとして使用することによって行われます。次に、衝突を解決し、値を取り出します。

これはルックアップにはうまく機能しますが、ハッシュ ルックアップを行う配列空間がまばらに入力されている場合、ハッシュマップ/順序付けされていないマップは、配列空間を徹底的に調べることなく、ハッシュマップ内のすべての要素をどのように効率的に反復するのでしょうか?

編集: まだブースト、SGI、および C++11 ハッシュマップ/順序付けられていないマップには反復子がありますが、どのように機能しますか?

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

nested - ネストされた boost::unordered_map は値を更新しませんか?

コード:

出力が 2 ではなく 1 になるのはなぜですか? そして、代わりに boost::unordered_map* > を使用すると、すべてがうまく機能します。誰でも私を助けることができますか?

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

c++ - unordered_mapをメンバーとして含む構造体のsizeof()

私は次のタイプの構造を持っています

sizeof(node)がC ++でそのノードの正しいサイズを提供すると仮定しても安全ですか?構造体にパディングがあると確信していますが、それでもsizeofはunordered_mapの正しいサイズを考慮に入れます。

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

c++ - unordered_map :: find()はルックアップのキーを挿入します

unordered_map :: find()の機能は、0の値でルックアップするキーを自動的に挿入することですか?これをはっきりさせておきます

したがって、もう一度1を検索すると、対応する値として0を持つtempMapに表示されますか。それはunordered_mapの機能ですか?

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

c++ - boost ::unordered_map-std::setをハッシュするためのカスタムハッシュ関数を指定する必要があります

を使用したいのですがboost::unordered_map<key,value>keystd::set<int>です。整数のセットは組み込み型ではないため、独自のハッシュ関数を提供する必要があると想定しました(つまり、boostのhash_rangeを使用することを考えていました)。

しかし、今私はこのようなハッシュマップを初期化しようとしましたが、ハッシュ関数も等式述語も提供していませんでした-そしてgccは文句を言いませんでした。ここで何が起きてるの?Boostは、STLコンテナをすべて単独でハッシュするのに十分賢いですか?これは、カスタムハッシュ関数を使用した場合よりも遅くなりますか?使用するのはboost::hash_rangeどうですか?

前もって感謝します。

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

c++ - tr1::unordered_map の要素を効率的に消去する

私は tr1::unordered_map を試していて、要素を効率的に削除する方法の問題に遭遇しました。「erase」メソッドは、キーまたはイテレータによる削除を提供します。前者はおそらく暗黙の検索操作を伴うため、後者の方が効率的であると思います。一方、インターネットで調査したところ、insert() メソッドを呼び出した後にイテレータが無効になる可能性があることがわかりました。

私は典型的な実世界の状況に興味があります.ハッシュテーブルに入れられたオブジェクトには、その寿命の間にinsert()の呼び出しが発生するのに十分な長さの寿命があります. したがって、そのような状況では、キーによる削除が残された唯一の選択肢であると結論付けてよいでしょうか? オブジェクトをより効率的に削除する方法はありますか? この質問は、削除が頻繁に発生するアプリケーションでのみ重要であることを十分に認識しています。これが私の現在のプロジェクトに当てはまるかどうかはまだわかりませんが、すでに多くのコードが存在する場合よりも、プロジェクトを設計しているときにこれらの問題について学びたいと思います.