問題タブ [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.

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

c++ - g++ リンカー エラー: std::hash の未定義参照エラーの取得

コードで TR1 実装の unordered_map を使用していますが、リンカが解読できない奇妙なエラーを返します。

これはエラーであり、それが向けられている行を検出することさえできませんか? 声明から:

`std::hash::operator()(DottedRule) const' への未定義の参照

ハッシュの使用法についてだと思います。さて、コード全体が大きすぎます (それでも見たい場合は、後で投稿するかもしれません) が、関連する部分は次のとおりです。

私が含めた最後の行は、ハッシュが使用されている唯一の場所です。何が起こっているのでしょうか?

どうもありがとう、オヌール

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

c++11 - C++0xのstd::weak_ptrにstd::hashが定義されていないのはなぜですか?

std ::weak_ptrのoperator<に関する説明を読んだ後、std::weak_ptrの制御ブロックを使用するようにstd::hashを定義しても機能しない理由がわかりません。また、これが標準化委員会によって無視されたとは信じられません。誰かがそのトピックに関連する議論を読んだことがありますか?

編集:演算子に関するディスカッション<std :: weak_ptr http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1590.html

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

c++ - std::hash との予期しない衝突

無限の数の文字列を 32b int にハッシュすると衝突が発生する必要があることはわかっていますが、ハッシュ関数には適切な分布が期待されます。

これら 2 つの文字列が同じハッシュを持つのは奇妙ではありませんか?

やその他を使用できることはわかってboost::hash<std::string>いますが、 の何が問題なのか知りたいですstd::hash。私はそれを間違って使用していますか?どういうわけかそれを「シード」するべきではありませんか?

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

c++ - テンプレートクラスのネストされたクラスのstd::hashの特殊化

Bazネストされたクラスを含むテンプレートクラスがありますSub。std :: hashを特殊化して、このサブクラスのハッシュ関数を定義したいと思います。ただし、機能していないようです。

Gcc 4.5.3は文句を言います:

アップデート

私が実際にやろうとしているのは、その中の要素への安定した参照(C ++の意味ではない)をサポートするコンテナーを実装することです。ユーザーがこれらの参照をstd::unordered_set類似のものに挿入し、それらを使用して既存の要素に効率的にアクセスまたは変更できるようにしたいと思います。以下は単なるモックアップであり、私が実装している正確なコンテナではありません。問題は、参照タイプのハッシュ関数を定義することです。

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

c++ - std::hash は stdlib ディストリビューション全体で同じであることが保証されていますか?

私がstd::hash使用してlibstdc++から、次のC++11VS 2012ライブラリで使用した場合、それらは一致しますか?

ハッシュの実装は C++ 仕様の一部ではなく、ディストリビューションによって異なる可能性があると思いますか?

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

c++ - std::hash および/または boost::hash の目的は何ですか?

参照の実装を指定せずに、また参照のアルゴリズム (md5、sha256 など) を指定せずにハッシュ関数を提供するのはなぜですか?

また、C++ 標準準拠 などのデータ構造にも同様の機能がありますstd::unordered_map/set/multimap/multiset::hash_function

だから私が得られないのは:

  • そのような文書化されていないメソッドを提供する理由
  • 実装の詳細は、ハッシュ関数を正しく使用するための基本です。プログラマーの観点から、これらの関数の目的は何ですか?
  • この関数は、特定のアルゴリズムにリンクできますか?
0 投票する
1 に答える
2729 参照

c++ - std::hashを他のライブラリのタイプに特化する方法

したがって、私が使用するライブラリには列挙型があります(名前はLibEnum)。のが必要ですstd::unordered_setLibEnum、専用ではないというコンパイルエラーが発生しますstd::hash。簡単に記述して値の数(最初の要素は0、2番目の要素は1など)を返すことができますが、この特殊化を正確にどこに置くべきで、どのように見えるべきですか?ライブラリソースを変更できません。

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

c++ - boost::hash_value を使用して C++11 で std::hash を定義する

C++11 & Boost で次のことを行う簡単な方法はありますか?

  • std::hashから入手可能な場合は常にの標準定義を使用する<functional>
  • が欠落しているがで利用可能な場合boost::hash_valueに定義するために使用します。std::hashstd::hashboost::hash_value<boost/functional/hash.hpp>

例えば:

  • std::hash<std::vector<bool>>標準ライブラリから取得する必要があります。
  • std::hash<std::vector<unsigned>>で実装する必要がありますboost::hash_value
0 投票する
4 に答える
3882 参照

c++ - std :: hashは、「等しい」浮動小数点数に対して等しいハッシュを保証しますか?

std::hash(たとえば、doublesまたはsの)浮動小数点の特殊化は、ほぼ等式floatに関して信頼できますか?つまり、2つの値(となど)が等しいと比較する必要があるが、演算子ではそうしない場合、どのように動作しますか?(1./std::sqrt(5.)/std::sqrt(5.)).2==std::hash

それで、私は期待どおりに機能するための鍵doubleとしてに頼ることができますか?std::unordered_map


「浮動小数点値のハッシュ」を見たことがありますが、それはブーストについて尋ねます。C++11の保証について質問しています。

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

c++ - std::tuples の std::hash... 改善点はありますか?

std::hash がタプルをサポートしていないことに気付いた人もいるかもしれません。そのため、これまでに見たソリューションよりも「いい」と思われるオーバーロードを追加しました。このコードをさらに削減するアイデアはありますか? これはコンパイラキラーであることに注意してください! それをコンパイルできたのは「Clang 3.2」だけでした... Intel Compiler 13.1 は特殊化を取得せず、「C++ 標準はハッシュ blabla をサポートしていません」と伝え続けます。そして、元の Microsoft コンパイラについて話す必要はありません。

ところで、私のソリューションは次のような再帰タプルをサポートしているstd::tuple<std::tuple<int,int>,int>ため、これが今日見た既存のソリューションにも当てはまるかどうかはわかりません。