std::hash
来自cppreference.com
< cpp | memory | unique ptr
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
template<class T, class Deleter> struct hash<unique_ptr<T, Deleter>>; |
(C++11 起) | |
std::hash为模板专门std::unique_ptr<T, Deleter>允许用户获取哈希的对象的类型std::unique_ptr<T, Deleter>.
原文:
The template specialization of std::hash for std::unique_ptr<T, Deleter> allows users to obtain hashes of objects of type std::unique_ptr<T, Deleter>.
对于一个给定的std::unique_ptr<T, Deleter> p,专业化,确保std::hash<std::unique_ptr<T, Deleter>>()(p) == std::hash<T*>()(p.get()).
原文:
For a given std::unique_ptr<T, Deleter> p, this specialization ensures that std::hash<std::unique_ptr<T, Deleter>>()(p) == std::hash<T*>()(p.get()).
[编辑] 示例
#include <iostream> #include <memory> #include <functional> struct Foo { Foo() { std::cout << "Foo...\n"; } ~Foo() { std::cout << "~Foo...\n\n"; } }; int main() { Foo* foo = new Foo(); std::unique_ptr<Foo> up(foo); std::cout << "hash(up): " << std::hash<std::unique_ptr<Foo>>()(up) << '\n'; std::cout << "hash(foo): " << std::hash<Foo*>()(foo) << '\n'; }
输出:
Foo... hash(up): 3686401041 hash(foo): 3686401041 ~Foo...
[编辑] 另请参阅
(C++11) |
hash function object (类模板) |