問題タブ [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 に答える
1904 参照

c++ - プライベート メンバー クラスの std::hash の特殊化

Outerプライベート メンバー クラス ( ) を持つクラス ( と呼びます) がありInnerます。のインスタンスをOuter::Inner順不同の標準コンテナに格納したいので、特化したいstd::hash<Outer::Inner>

ただし、これを書くとき:

コンパイラは文句を言います:

この回答std::hashに従ってフレンド構造体を作成しようとしましたが、それも機能しませんでした: の前方宣言が失敗しました:Outer::Inner

では、どのように進めればよいでしょうか (私が意図したことがまったく可能である場合)?

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

c++11 - unordered_set - 非常に小さい max_bucket_count

更新: Visual Studio 2013 を使用する Windows でこの「問題」が発生します。Clang 3.3 と llvm 標準ライブラリのごく最近のバージョンを使用する Linux で同じコードを使用しても、これは発生しません。それでも、これを Microsoft のバグとして書き留める準備はできていません。

使用している unordered_set に奇妙な問題があることに気付きました。load_factor は 1 で、最大サイズは数百万ですが、以下は maximum_bucket_count がわずか 8 であることを示しています。さまざまなタイプのセットでこれを試しました。

誰でもこれを説明できますか?

これは、初期化または構成に依存する数値ではなく、システムまたはライブラリの実装制限であると想定されています。max_bucket_count が max_count (つまり、数百万) と同じである以下のコードの例を見てきました。

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

c++ - ループで反復子を使用して unordered_set の要素を削除する

次のコードを検討してください。

Class MyClass自己定義クラスです:

次に、次のコードは、Debug Assertion Failedを呼び出した直後にループ内で発生しますit = T.erase(it);

それを解決する方法とその理由は? PS: 私の環境:VS2010

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

c++ - 関数が終了すると std::unordered_set のデータは消去されますか?

関数内で unordered_set にデータを格納し、格納されているオブジェクトへのポインターを返す場合、ポインターは関数のスコープ外でも有効ですか?

例えば。

*intptr別の関数でアクセスしようとするとエラーになりますか? または、unordered_set のスコープが終了すると、unordered_set 内のデータの割り当てが解除されますか?

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

sorting - STL unordered_map と unordered_set を STL アルゴリズムでソートできないのはなぜですか?

簡単な使用例を示すことから始めます。

  • 社会保障 ID データベースの問題を考えてみましょう。C++ コードでは としてモデル化されておりstd::unordered_map、そのキーは個人の社会保障 ID であり、その値はその個人std::stringのフルネーム (例: std::unordered_map<int, std::string> DB;) です。

  • std::unordered_mapまた、個人の ID (つまりのキー)に基づいて昇順に並べ替えられたこのデータベースを印刷する要求があることも考慮してください。

  • 単純に、以下のコード例のように、要求された基準に従ってstd::sortをソートしてから印刷するために使用することを考えるでしょう:std::unordered_map



  • ただし、 aまたは astd::sortのいずれかの範囲で を使用するとコンパイラ エラーが発生するため、これは当てはまりません。std::unordered_mapstd::unordered_set

質問:

  1. STL の順序付けられていないコンテナーを並べ替えできないのはなぜstd::sortですか?
  2. std::unordered_mapaまたは aをソートする正当で効率的な方法はありますかstd::unordered_set?
0 投票する
2 に答える
1067 参照

c++ - C++ bool std::operator < キー std::unordered_set を持つマップのエラー>

このマップに挿入しようとすると:

std::map<std::unordered_set<int >, std::pair<float, std::pair<float, float >> >

このエラーが発生しました

エラー C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : 'const std::_Tree<_Traits> &' のテンプレート引数を推測できませんでしたfrom 'const std::unordered_set,std::equal_to<_Kty>,std::allocator<_Kty>>'

私のデータは次のように定義されています。

問題のある部分:

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

c++ - C 文字列のハッシュを取得する標準的なメカニズムはありますか?

私は C 文字列 ( wchar_t const*) を持っていますが、その有効期間は他のデータ構造によって所有されています。文字列への参照はポインタによって渡されます。そのようなインスタンスをunordered_map. std::wstring一時的に構築して呼び出すことなく、これのハッシュを取得するために使用できる標準ツールはありstd::hash<std::wstring>ますか?

std::hash<T*>ポインタが指すバイトストリームの内容のハッシュではなく、ポインタのハッシュを返すことに注意してください。

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

c++ - 順序付けられていないコンテナへの挿入による決定論

順序付けされていない 2 つのコンテナーに同じ (サイズと値) 要素を挿入すると、2 つの反復子でコンテナーをトラバースすると、常に同じ要素が同じ位置に表示されますか?

はいの場合、(単一の!) ハッシュ関数を作成して、この決定論を破ることはできますか?