Tag: unordered map

hash_map和unordered_map的区别?

我最近发现在c ++中实现哈希映射将被称为unordered_map。 当我查找他们为什么不只是使用hash_map时,我发现显然存在着与unordered_map解决的hash_map实现相关的兼容性问题( http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B% 29 )。 维基页面没有提供更多的信息,所以我想知道是否有人知道一些与hash_map的问题,unordered_map解决

C ++ std :: unordered_map中使用的默认哈希函数是什么?

我在用 unordered_map<string, int> 和 unordered_map<int, int> 每种情况下使用什么散列函数,每种情况下碰撞的机会是多less? 我将分别插入唯一的string和唯一的int作为键。 我有兴趣知道散列函数在string和整型键以及它们的碰撞统计量的情况下的algorithm。

如何在无序容器中为用户定义的types专门化std :: hash <Key> :: operator()?

为了支持std::unordered_set<Key>和std::unordered_map<Key, Value>用户定义的键types,必须提供operator==(Key, Key)和一个哈希仿函数: struct X { int id; /* … */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t operator()(const X& x) const { return std::hash<int>()(x.id); } }; std::unordered_set<X, MyHash> s; 用std::unordered_set<X>写一个types为X的默认散列会更方便,就像编译器和库一样。 经过咨询 C ++标准草案N3242§20.8.12 [unord.hash]和§17.6.3.4[hash.requirements], Boost.Unordered g ++ include\c++\4.7.0\bits\functional_hash.h VC10 include\xfunctional 堆栈溢出中的各种相关问题 似乎有可能专门化std::hash<X>::operator() : namespace std […]