問題タブ [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.
c++ - プライベート メンバー クラスの std::hash の特殊化
Outerプライベート メンバー クラス ( ) を持つクラス ( と呼びます) がありInnerます。のインスタンスをOuter::Inner順不同の標準コンテナに格納したいので、特化したいstd::hash<Outer::Inner>。
ただし、これを書くとき:
コンパイラは文句を言います:
この回答std::hashに従ってフレンド構造体を作成しようとしましたが、それも機能しませんでした: の前方宣言が失敗しました:Outer::Inner
では、どのように進めればよいでしょうか (私が意図したことがまったく可能である場合)?
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 (つまり、数百万) と同じである以下のコードの例を見てきました。
c++ - ループで反復子を使用して unordered_set の要素を削除する
次のコードを検討してください。
Class MyClass自己定義クラスです:
次に、次のコードは、Debug Assertion Failedを呼び出した直後にループ内で発生しますit = T.erase(it);。
それを解決する方法とその理由は? PS: 私の環境:VS2010
c++ - 関数が終了すると std::unordered_set のデータは消去されますか?
関数内で unordered_set にデータを格納し、格納されているオブジェクトへのポインターを返す場合、ポインターは関数のスコープ外でも有効ですか?
例えば。
*intptr別の関数でアクセスしようとするとエラーになりますか? または、unordered_set のスコープが終了すると、unordered_set 内のデータの割り当てが解除されますか?
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または a
std::sortのいずれかの範囲で を使用するとコンパイラ エラーが発生するため、これは当てはまりません。std::unordered_mapstd::unordered_set
質問:
- STL の順序付けられていないコンテナーを並べ替えできないのはなぜ
std::sortですか? std::unordered_mapaまたは aをソートする正当で効率的な方法はありますかstd::unordered_set?
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>>'
私のデータは次のように定義されています。
問題のある部分:
c++ - C 文字列のハッシュを取得する標準的なメカニズムはありますか?
私は C 文字列 ( wchar_t const*) を持っていますが、その有効期間は他のデータ構造によって所有されています。文字列への参照はポインタによって渡されます。そのようなインスタンスをunordered_map. std::wstring一時的に構築して呼び出すことなく、これのハッシュを取得するために使用できる標準ツールはありstd::hash<std::wstring>ますか?
std::hash<T*>ポインタが指すバイトストリームの内容のハッシュではなく、ポインタのハッシュを返すことに注意してください。
c++ - 順序付けられていないコンテナへの挿入による決定論
順序付けされていない 2 つのコンテナーに同じ (サイズと値) 要素を挿入すると、2 つの反復子でコンテナーをトラバースすると、常に同じ要素が同じ位置に表示されますか?
はいの場合、(単一の!) ハッシュ関数を作成して、この決定論を破ることはできますか?