std::hash
来自cppreference.com
< cpp | memory | unique ptr
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| 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>.
Original:
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>.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
對於一個給定的std::unique_ptr<T, Deleter> p,專業化,確保std::hash<std::unique_ptr<T, Deleter>>()(p) == std::hash<T*>()(p.get()).
Original:
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()).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 為例
#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'; }
Output:
Foo... hash(up): 3686401041 hash(foo): 3686401041 ~Foo...
[编辑] 另請參閱
| (C++11) |
hash function object (類模板) |