問題タブ [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++ - Key が T のメンバーである unordered_map の使用
unordered_map を使用して、一定の時間 (平均的なケース) でメンバー変数によってオブジェクトにアクセスできるようにする良い方法はありますか? 次の例にはこの機能がありますが、それぞれの名前をPerson
キーとして複製する必要があります。
オブジェクトをハッシュしてアクセスするときに使用することを知る必要があるのではなく、どういうわけかそれ自体でvalue_type
ある必要があると考えています。Person
pair<string, Person>
unordered_map
Person::getName
理想的な解決策は、各オブジェクトのキーを取得するために使用することを知っているをセットアップできるようにすることですunordered_map
(またはunordered_set
、それが仕事により適している場合) 。Person::getName
次に、オブジェクトを指定するだけでそれらを挿入し(キーの取得方法を知っているため、キーはありません)、の戻り値と等しいキーを指定してアクセスできますPerson::getName
。
次のようなもの:
では、これをうまく実行できるテンプレート クラスをインスタンス化することは可能unordered_map
でしょうか?
c++ - unordered_map / unordered_set のタプルの汎用ハッシュ
std::unordered_map<tuple<int, int>, string>
箱から出してすぐに動作しないのはなぜですか? のハッシュ関数を定義しなければならないのは面倒ですtuple<int, int>
。
タプルをキーとして順序付けされていないマップを構築する(Matthieu M.) は、これを自動化する方法を示していますboost::tuple
。可変個引数テンプレートを使用せずに c++0x タプルに対してこれを行う方法はありますか?
確かにこれは標準にあるはずです:(
c++ - unordered_map ハッシュ関数 c++
このように unordered_map を定義する必要があります。関数を定義してこのマップにunordered_map<pair<int, int>, *Foo>
渡すための構文は何ですか?hash
equal
私はそれにこのオブジェクトを渡そうとしました:
そして運がない:
私はそれが何をsize_type_Buskets
意味するのか分からないので、私はそれを与えました1
。それを行う正しい方法は何ですか?ありがとう。
visual-studio-2010 - vs2010 のデバッグ モードで boost:unordered_map の値を確認する方法
私は次のコードを持っています...
ご覧のとおり、マップの値はポインターです。マップ内の値を取得するにはどうすればよいですか。を使用する(*(ret[int]))[int]
と、値を取得できないようです。私は何を間違っていますか?
java - 順序付けられていない (またはハッシュ) マップの反復子
私が理解している限りでは、ハッシュマップは O(1) 時間に近い時間で要素を見つけることができるため、標準マップよりも望ましいです。これは、ハッシュまたはキーを配列ルックアップとして使用することによって行われます。次に、衝突を解決し、値を取り出します。
これはルックアップにはうまく機能しますが、ハッシュ ルックアップを行う配列空間がまばらに入力されている場合、ハッシュマップ/順序付けされていないマップは、配列空間を徹底的に調べることなく、ハッシュマップ内のすべての要素をどのように効率的に反復するのでしょうか?
編集: まだブースト、SGI、および C++11 ハッシュマップ/順序付けられていないマップには反復子がありますが、どのように機能しますか?
nested - ネストされた boost::unordered_map は値を更新しませんか?
コード:
出力が 2 ではなく 1 になるのはなぜですか? そして、代わりに boost::unordered_map* > を使用すると、すべてがうまく機能します。誰でも私を助けることができますか?
c++ - unordered_mapをメンバーとして含む構造体のsizeof()
私は次のタイプの構造を持っています
sizeof(node)がC ++でそのノードの正しいサイズを提供すると仮定しても安全ですか?構造体にパディングがあると確信していますが、それでもsizeofはunordered_mapの正しいサイズを考慮に入れます。
c++ - unordered_map :: find()はルックアップのキーを挿入します
unordered_map :: find()の機能は、0の値でルックアップするキーを自動的に挿入することですか?これをはっきりさせておきます
したがって、もう一度1を検索すると、対応する値として0を持つtempMapに表示されますか。それはunordered_mapの機能ですか?
c++ - boost ::unordered_map-std::setをハッシュするためのカスタムハッシュ関数を指定する必要があります?
を使用したいのですがboost::unordered_map<key,value>
、key
はstd::set<int>
です。整数のセットは組み込み型ではないため、独自のハッシュ関数を提供する必要があると想定しました(つまり、boostのhash_rangeを使用することを考えていました)。
しかし、今私はこのようなハッシュマップを初期化しようとしましたが、ハッシュ関数も等式述語も提供していませんでした-そしてgccは文句を言いませんでした。ここで何が起きてるの?Boostは、STLコンテナをすべて単独でハッシュするのに十分賢いですか?これは、カスタムハッシュ関数を使用した場合よりも遅くなりますか?使用するのはboost::hash_range
どうですか?
前もって感謝します。
c++ - tr1::unordered_map の要素を効率的に消去する
私は tr1::unordered_map を試していて、要素を効率的に削除する方法の問題に遭遇しました。「erase」メソッドは、キーまたはイテレータによる削除を提供します。前者はおそらく暗黙の検索操作を伴うため、後者の方が効率的であると思います。一方、インターネットで調査したところ、insert() メソッドを呼び出した後にイテレータが無効になる可能性があることがわかりました。
私は典型的な実世界の状況に興味があります.ハッシュテーブルに入れられたオブジェクトには、その寿命の間にinsert()の呼び出しが発生するのに十分な長さの寿命があります. したがって、そのような状況では、キーによる削除が残された唯一の選択肢であると結論付けてよいでしょうか? オブジェクトをより効率的に削除する方法はありますか? この質問は、削除が頻繁に発生するアプリケーションでのみ重要であることを十分に認識しています。これが私の現在のプロジェクトに当てはまるかどうかはまだわかりませんが、すでに多くのコードが存在する場合よりも、プロジェクトを設計しているときにこれらの問題について学びたいと思います.