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

c++ - Visual C++ および clang での C++11 unordered_set の使用

クロスプラットフォームの C++ アプリケーションで std::unordered_set を使用しようとしています。Windows の Visual C++ では魅力的にコンパイルされて動作しますが、Mac OS X の clang では致命的なコンパイル エラーが発生します。

なぜそれが起こるのか、これを機能させる正しい方法は何かを知りたいです。

コード例:

クラン出力:

@mfontanini の提案を使用したUPD作業実装: https://gist.github.com/vbo/6090142

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

c++ - unordered_set の使用方法

次のように unordered_set を定義しようとしています。

コンパイルすると、次のエラーが発生します。

C++ 標準は、この型のハッシュを提供していません。

クラスPoint:

  • Pointのハッシュ関数を定義する方法/場所は?
  • 2D ポイントの適切なハッシュ関数は何でしょうか?
0 投票する
1 に答える
722 参照

c++ - バケット反復子を介して std::unordered_set から要素を削除することは可能ですか?

std::unordered_set質問にあるように、バケット イテレータ ( ) を使用して要素を削除できますlocal_iteratorか? 考えられる解決策は 2 つあります。

  • erase() は global のみを受け入れるためiterator、同等の機能はありlocal_iteratorますか?
  • と同等のグローバルを取得することは可能iteratorですlocal_iteratorか?

不可能な場合は、不可能な理由を詳しく説明してください。

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

c++ - unordered_set のカスタム ポインター型のハッシュ

一意のエッジを持つ unordered_set を持つことができるように、Edge 構造体をハッシュしようとしています。私の場合、エッジの 2 つのエンドポイントの組み合わせが以前のセットで検出されなかった場合、エッジは一意であると見なされます。

私のコードは、Edge 型だけを含む unordered_set に対しては正常に動作しますが、Edge 型へのポインターに対しては動作しません。以下のやや長いコードを参照してください。どんな助けでも大歓迎です。

これは出力です:

だから私の質問は: 2 番目の要素が 2 番目のテーブルに追加されるのはなぜですか? ハッシュ関数を確認しましたが、両方のエントリに対して同じキーが返されるため、それが原因ではないようですが、他に何が考えられるかはわかりません。

編集:

が呼び出されていないことがわかりましたが、そのinline bool operator==(const Edge* other) const理由はわかりません。

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

c++ - unordered_set 非 const イテレータ

テスト目的で、小さな unordered_set を作成し、セットを反復しようとしました。セットは独自のクラスを保持します。

いくつかの要素を挿入し、反復中にオブジェクトを変更しようとしました:

(const_local_iterator ではなく) local_iterator を使用しましたが、それでもオブジェクトを変更できません。何らかの理由で、反復子はまだ定数オブジェクトを参照しています。

私の質問:なぜそうなのですか?通常の反復子が const オブジェクトを参照する場合、const と非 const 反復子の違いは何ですか?

VisualStudio 2013 および minGW でテスト済み。

助けてくれてありがとう:-)

編集:ハッシュ関数:

同じ質問をする将来このトピックの発見者のために、matrNrを暴力的に変更した場合の出力例を次に示します。

それを表示してみてください:

あなたは次のようなものを得るかもしれません:

バケット番号: 0

空のバケット

バケット番号: 1

マトリケル数: 5

名前:ヴィルマ

バケット数: 2

空のバケット

バケット数: 3

空のバケット

バケット数: 4

マトリケル数: 5

名前:フレッド

バケット数: 5

空のバケット

バケット数: 6

マトリケル数: 5

名前:バーニー

バケット数: 7

空のバケット

//不要な出力 ;-)

マトリケル番号: -842150451

名前:

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

c++ - ペアのベクトルを要素とする unordered_set の使い方

みたいなのが欲しかった

しかし、ペアがなくても:

失敗します:

http://ideone.com/wusr5V