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'; }
Вывод:
Foo... hash(up): 3686401041 hash(foo): 3686401041 ~Foo...
[править] См. также
| (C++11) |
hash function object (шаблон класса) |