#include <iostream>
int main() {
std::hash<int> hash_f;
std::cout << hash_f(0) << std::endl;
std::cout << hash_f(1) << std::endl;
std::cout << hash_f(2) << std::endl;
std::cout << hash_f(3) << std::endl;
}
「g++ main.cpp -std=c++11」でコンパイルすると、結果は次のようになります。
0
1
2
3
なぜこうなった?私はライブラリを使用しておらず、特殊なハッシュ関数も持っていません。
補遺: セットのハッシュがそのコンポーネントのハッシュの合計である int の unordered_set の unordered_set のハッシュを定義したかったのですが、{2,4} のハッシュが{1,5} のハッシュ。これを回避する最も簡単な方法は、 std::hash double 関数を使用することです。