|
Reference
Определяет boost::hash и функции помощника.
namespace boost {
template<typename T> struct hash;
template<> struct hash<bool>;
template<> struct hash<char>;
template<> struct hash<signed char>;
template<> struct hash<unsigned char>;
template<> struct hash<wchar_t>;
template<> struct hash<short>;
template<> struct hash<unsigned short>;
template<> struct hash<int>;
template<> struct hash<unsigned int>;
template<> struct hash<long>;
template<> struct hash<unsigned long>;
template<> struct hash<long long>;
template<> struct hash<unsigned long long>;
template<> struct hash<float>;
template<> struct hash<double>;
template<> struct hash<long double>;
template<> struct hash<std::string>;
template<> struct hash<std::wstring>;
template<typename T> struct hash<T*>;
template<> struct hash<std::type_index>;
template<typename T> void hash_combine(size_t &, T const&);
template<typename It> std::size_t hash_range(It, It);
template<typename It> void hash_range(std::size_t&, It, It);
std::size_t hash_value(bool);
std::size_t hash_value(char);
std::size_t hash_value(signed char);
std::size_t hash_value(unsigned char);
std::size_t hash_value(wchar_t);
std::size_t hash_value(short);
std::size_t hash_value(unsigned short);
std::size_t hash_value(int);
std::size_t hash_value(unsigned int);
std::size_t hash_value(long);
std::size_t hash_value(unsigned long);
std::size_t hash_value(long long);
std::size_t hash_value(unsigned long long);
std::size_t hash_value(float);
std::size_t hash_value(double);
std::size_t hash_value(long double);
template<typename T> std::size_t hash_value(T* const&);
template<typename T, unsigned N> std::size_t hash_value(T (&val)[N]);
template<typename T, unsigned N> std::size_t hash_value(const T (&val)[N]);
template<typename Ch, typename A>
std::size_t hash_value(std::basic_string<Ch, std::char_traits<Ch>, A> const&);
template<typename A, typename B>
std::size_t hash_value(std::pair<A, B> const&);
template<typename T, typename A>
std::size_t hash_value(std::vector<T, A> const&);
template<typename T, typename A>
std::size_t hash_value(std::list<T, A> const&);
template<typename T, typename A>
std::size_t hash_value(std::deque<T, A> const&);
template<typename K, typename C, typename A>
std::size_t hash_value(std::set<K, C, A> const&);
template<typename K, typename C, typename A>
std::size_t hash_value(std::multiset<K, C, A> const&);
template<typename K, typename T, typename C, typename A>
std::size_t hash_value(std::map<K, T, C, A> const&);
template<typename K, typename T, typename C, typename A>
std::size_t hash_value(std::multimap<K, T, C, A> const&);
template<typename T> std::size_t hash_value(std::complex<T> const&);
std::size_t hash_value(std::type_index);
template<typename T, std::size_t N>
std::size_t hash_value(std::array<T, N> const&);
template<typename... T> std::size_t hash_value(std::tuple<T...>);
}
Support functions (Boost extension).
templatetypename T> void hash_combine(size_t & Tconst&; Неоднократно вызывается для постепенного создания хеш-значения из нескольких переменных. Последствия: | Обновления семена с новым хеш-значением, генерируемым путем объединения его с результатом hash_value(v). Всегда будет производить один и тот же результат для одной и той же комбинации seed и hash_value(v) во время одного запуска программы. | Примечания: | hash_value называется без квалификации, так что перегрузки можно найти через ADL. Это расширение до TR1 Forward заявлено в Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы, поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи. | Броски: | Бросает только если hash_value(T) бросает. Сильная безопасность исключения, если hash_value(T) также имеет сильную безопасность исключения. |
Ithash_tItпервый,последний;6><типовое имяvoidhash_range:6>size_t,первый,Последний;6> Вычислите комбинированное хеш-значение элементов итераторного диапазона. < Это расширение для TR1 Форвард объявлен в Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы - поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи. Броски: Только броски, если hash_traits(std::iterator_traits::value_type)броски. hash_range(std::size_t&, It, It) имеет базовую безопасность исключения, если hash_value(std::iterator_traits::value_type) имеет базовую безопасность исключения. |
Overloadable hash implementation (Boost extension).
>>>>>>>>>>>>>><6 Как правило, пользователи не должны звонить напрямую, вместо этого они должны использовать boost::hash, boost::hash_range или boost::hash_combine, которые называют hash_value без квалификации пространства имен, так что перегрузки для пользовательских типов обнаруживаются через ADL. Примечания: | Это расширение для TR1 Эта хеш-функция не предназначена для общего использования и не гарантируется равенство во время отдельных запусков программы - поэтому, пожалуйста, не используйте ее для любого постоянного хранения или связи. | Броски: | Только броски, если пользователь предоставил версию hash_valueброски для элемента контейнера, или один из типов, хранящихся в паре. | | | | | | | | | | | | , , std:: В противном случае неопределенное значение, за исключением того, что равные аргументы должны давать тот же результат. | std::type_index | val.hash_code() | |
|