問題タブ [stdhash]
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 が異なる文字列に対して等しいのはなぜですか?
std::Hash の結果が異なる文字列に対して等しいのはなぜですか? 私は msvc2010sp1 を使用しましたが、この結果を見て驚きました:
出力:
なぜこれが起こるのか誰にも分かりますか?
ps この例は msvc2013 update1 で正しく動作します
c++ - c++ 11 を使用している場合、clang ++ は std::hash を見つけることができません
FreeBSD 9.2 でいくつかのソフトウェアをコンパイルしようとしていますが、問題が発生しました。私自身は C++ 開発者ではなく、どうやら Google で適切な部分を見つけることができないため、問題を解決できませんでした。
開発者は -std=c++0x を CXXFLAGS に挿入しましたが、これは FreeBSD の g++ のバージョンではサポートされていません。Googleで見つけたアドバイスに基づいて、clang ++を使用してc ++ 11に切り替えましたが、まだこの問題に遭遇しています:
これが std::hash の問題に限定されていると信じる理由はありません..最初に失敗するだけです。一方で、それが唯一の問題かもしれません。
「名前空間を使用する」の代わりに std::* を使用する方が良い理由について多くのアドバイスを見つけました。また、この種の問題が発生しないようにコードを適切に記述する方法について開発者に多くのアドバイスを見つけましたが、対処方法については知りませんでした。これを既存のプロジェクトで使用します。このプロジェクト全体のコードをリファクタリングする立場にはありません。
これをコンパイルできるようにする簡単なものがここにないことを願っています。誰かが私に適切なドキュメントを教えてもらえますか?
c++ - プライベート メンバー クラスの std::hash の特殊化
Outer
プライベート メンバー クラス ( ) を持つクラス ( と呼びます) がありInner
ます。のインスタンスをOuter::Inner
順不同の標準コンテナに格納したいので、特化したいstd::hash<Outer::Inner>
。
ただし、これを書くとき:
コンパイラは文句を言います:
この回答std::hash
に従ってフレンド構造体を作成しようとしましたが、それも機能しませんでした: の前方宣言が失敗しました:Outer::Inner
では、どのように進めればよいでしょうか (私が意図したことがまったく可能である場合)?
c++ - std::hash をオーバーライドするGoogle のシティ ハッシュを使用するには
だから、私は脳死の瞬間を過ごしているので、簡単な質問.. std::hash<std::string>
Googleのシティハッシュを使用するためにどのように上書き/置換できますか?
私の現在のアプローチは、ラッパーを持ち、そのためstd::string
に特化std::hash<>
することです。しかし、実質的に同じインターフェースを実装するstd::string
必要があり、これを避けたいので、これは苦痛です。
c++ - const 型と非 const 型の部分的な std::hash 特殊化
std::hash
クラスの 1 つを部分的に特殊化するコードに問題があります。これは自己完結型の例です。
編集: Piotr に感謝します。修正を含めるようにコードを変更しましたが、エラーは残ります。
(g++ 4.9.0) でコンパイルした場合:
なぜ私が得ているのか理解できません: error: invalid conversion from 'const A*' to 'A*' [-fpermissive]
。コードを改善するための提案はありますか? テンプレート本体が同じであることA
を考えると、両方のハッシュを特殊化する必要があるのは奇妙に思えます。const A
c++ - ポインターからメンバーへの std::hash の特殊化を使用できませんか?
汎用ポインター型に対する std::hash の特殊化は、メンバーへのポインターに使用できると思いますが、それをそのまま使用することはできません。代わりに、コンパイラが「不完全な型」エラーを表示します。これは、ポインターに std::hash の特殊化を使用していないことを意味すると思いますか? 何が起きてる?
エラー:
c++ - std::hash の使用()(std::this_thread::get_id())
私は現在、C++ アプリケーションを Windows と Linux の両方でコンパイルできるようにする作業を行っています。
Linux では gcc 4.8 ではコンパイルされません (このスレッドのコメントに感謝します)。これに対する推奨される修正は、次を使用することでした。
これらが同じ出力を生成するかどうかは誰にもわかりますか?