Пространства имён
Варианты
Действия

std::hash

Материал из cppreference.com
< cpp‎ | memory‎ | unique ptr

 
 
 
 
 
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>.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Для данного 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()).
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

#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)
объект хеш-функции
(шаблон класса) [edit]