c++ - Why std::hash<int> seems to be identity function -
#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; } i compile "g++ main.cpp -std=c++11" , result : 0 1 2 3 why happening? don't use library , don't have specialized hashing function. addendum : wanted define hash unordered_set of unordered_set of int hash of set being sum of components hashs, if it's identity it's not cool because hash of {2,4} same hash of {1,5}. simplest way avoid may use std::hash double function. it seems identity, allowed distinct.. cpp reference the actual hash functions implementation-dependent , not required fulfill other quality criteria except specified above. notably, implementations use trivial (identity) hash functions map integer itself. in other words, these hash functions...