hash_value function in C++11
hash_value function in C++11
Boost库提供了一个方便的函数hash_value
,它基本上只是调用:
return hash<T>()(key);
据我所见,C++11包含std::hash
,它与boost::hash
非常相似,但不包含std::hash_value
。这需要应用程序代码创建一个hash
对象并调用它的operator()
,而不仅仅是调用一个方便的函数。std::hash_value
没有标准化是什么原因?
std::hash<T>
函数的主要用途是用于从std::unordered_*
容器组中的键获取哈希值的对象。它们将始终包含并使用相应的对象,可能会使用空基优化来避免占用任何内存。在任何情况下,无论何时使用std::hash<T>
类型,对象实际上都在附近。
尽管函数对象可以单独使用,但可能很少使用。此外,对于其他类似的现有函数对象,也没有相应的方便调用函数:尽管它们大多是运算符的包装器,尤其是std::less<void*>
,但单独调用可能会很有趣,因为您不能使用ptr1 < ptr2
(至少,如果ptr1
和ptr2
不是同一数组对象的一部分,它就不能在C++03中使用)。也就是说,没有适当的优先顺序。
最后,我想方便函数根本不是提案的一部分:如果它没有被提出,而且没有一个真正好的案例,那么C++标准中就不会包含任何内容。从外观上看,n1456似乎至少是"哈希表"提案的一个修订版,而且它不包括std::hash_value<T>()
的踪迹。
相关文章:
- P99_FOR in C++11
- 明确定义'static const variable in a struct'对C++ 11 及以上有什么影响吗?
- OSAtomicAdd32 variant in C++11
- std::nearbyint vs std::round in C++11
- Parsing int in C++11 - stoi
- char16_t and char32_t types in C++11
- 如果不使用C++11,安东尼威廉的"C++ Concurrency in action"是一本合适的书吗?
- 用于循环原因的新 C++11:"error: ‘begin’ was not declared in this scope"
- SIGSEGV(signal 11) 'segmentation fault' in FCTRL2 codechef
- C++11 in QtCreator 3.5.0 on ubuntu
- Using Partial Specialization in C++11
- C++ 11 in vxworks
- hash_value function in C++11
- Efficient Argmin in C++11
- boost::thread_group in C++11?
- C++11 "In class initialization"功能不适用于工会
- C++11 thread_pool, futures, promises support in gcc
- Unicode in C++11
- min and max Variadic Template variant in C++11?
- Breaking Change in C++11 with make_pair(_Ty1&_Val1, const _Ty2& _Val2)