問題タブ [unordered-set]

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 に答える
352 参照

c++ - C++ の順序付けられていない連想コンテナーのハッシュ関数

unordered_mapC++ では、順不同の連想コンテナー ( 、unordered_set、 など)ごとunordered_multimapにハッシュ関数を定義する必要があります。ウィキペディアで指摘されているように、

struct hash_Xのカスタムハッシュ関数ですstruct X。しかし、この関数は何をするのでしょうか? なぜハッシュ関数が必要なのですか? 他のタイプのカスタム ハッシュ関数はありますか? もしそうなら、どのように2つのそのような機能間の効率を比較しますか.

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

c++ - std::hash を定義する

T型の要素へのポインターを保持し、それらに対して関数を実行できるテンプレート化されたクラスを作成する必要があります。関数はさまざまな場所から取得されるため、後で呼び出すことができるように、関数を格納するためのコンテナーが必要です。std::unordered_setハッシュテーブルとして実装されているため、速度が向上し、重複が制限されるため、を使用することにしました。std::functionクラス全体を作成しましたが、型のポインターを取り、Tを返すmy 用に定義されたハッシュ関数がないため、コンパイルされませんvoidstruct hash<std::function<void(MyCustomType*)>>使用する型ごとに指定する(および演算子をオーバーロードする)のは簡単()ですが、実際に関数をハッシュするにはどうすればよいでしょうか?

これは、関連するメンバーとメソッドを含む私のクラスからの抜粋です。

を使用することに完全に縛られているわけではありませんstd::unordered_setが、この部分 (および残りのコード) を適切に機能させるために必要なものはすべて提供されているようです。

私はこれについて間違った方法で考えていますか?をハッシュすることは完全に不可能std::functionですか?

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

c++ - C++ の順序付けられていないセットのサイズに制限はありますか

単語とタグ (単語/タグのように見えます) を含むテキスト ファイルを解析しています。ファイル内の一意のタグの数を見つけようとしており、C++ で順序付けられていないセットを使用してタグを挿入しています。ただし、この例外がランダムに発生しているようです:「EXC_I386_GPFLT」を、順序付けされていないセットに (未決定の数の挿入の後) 挿入すると発生します。 400キロバイト。

これが私の主な機能です:

ここに私の ParseTrain.cpp があります:

ここに私の ParseTrain.h があります:

最後に、タグを解析して取得しようとしているテキスト ファイルの一部を次に示します。

挿入時に例外がスローされる理由が本当にわかりません。私が考えることができる唯一のことは、順序付けられていないセットのサイズに制限があるかもしれないということですが、私がそのような小さなメモリを使用していることを考えると、それは奇妙に思えます. どんな助けでも大歓迎です。

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

c++ - unordered_set の重複をチェックする方法は?

2 つの unordered_sets があり、最初の要素のすべての要素が 2 番目の要素でもあるかどうかを確認する必要があります。

これを行う簡単な方法はありますか、それとも別のコンテナーを使用する必要がありますか?

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

c++ - std::unordered_multiset::find 関数は、同じハッシュ値を持つ 2 つの値の間に最初に挿入された要素を返しますか

std::unordered_multiset同じハッシュ値をマッピングする 2 つの値があると言うと、検索が最初に挿入された要素を返すという c++ 標準による保証はありますか?

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

c++ - 順序付けられていないセット、挿入する前に検索を呼び出す価値がありますか?

要素を std::unorder_set に挿入するとき、std::unordered_set::insert の前に std::unordered_set::find を呼び出す価値がありますか? 私の理解では、挿入が成功したかどうかを示すブール値を含む std::pair を返すため、常に insert を呼び出す必要があります。