Giriş
std::hash template parametresi için özelleşmiş bir sürü kod C++ ile geliyor.
Constructor
Şöyle yaparız.
Bir çok kodda std::hash değişkeni oluşturmak yerine şöyle yapılıyor
Şöyle yaparız.
Şöyle yaparız.
Eğer 64 bit olan ancak tipi farklı bir değişken varsa şöyle yapabiliriz.
Açıklaması şöyle.
Şöyle yaparız.
std::hash template parametresi için özelleşmiş bir sürü kod C++ ile geliyor.
Constructor
Şöyle yaparız.
std::hash<std::string> h;
operator () metoduBir çok kodda std::hash değişkeni oluşturmak yerine şöyle yapılıyor
return hash<string>() (sd.isbn());
Aslında şu kod ile aynıdır.std::hash<std::string> temp;
return temp (sd.isbn());
Örnek - boost::multiprecision::cpp_intŞöyle yaparız.
template <typename T> struct hash_str {
size_t operator()(const T &t) const { return std::hash<std::string>()(t.str()); }
};
using bmp::cpp_int;
boost::unordered_map<cpp_int, cpp_int, hash_str<cpp_int> > mp;
Örnek - long longŞöyle yaparız.
Örnek - GUIDlong long sum {0};
std::size_tvalue = std::hash<
long long>()(sum);
Eğer 64 bit olan ancak tipi farklı bir değişken varsa şöyle yapabiliriz.
namespace std
{
template<>
struct hash<GUID>
{
std::size_t operator()(const GUID& gUid) const
{
return std::hash<uint64_t>()(reinterpret_cast<const uint64_t>(gUid)); }
};
}
Örnek - std::null_ptrAçıklaması şöyle.
Şöyle yaparızEach standard library header that declares the template std::hash provides enabled specializations of std::hash for std::nullptr_t and all cv-unqualified arithmetic types (including any extended integer types), all enumeration types, and all pointer types.
std::hash<std::nullptr_t> h;
return h(nullptr);
Örnek - std::string
Şöyle yaparız.
std::string name = ...;
std::hash<std::string> h;
std::size_t value =
h (name);
Hiç yorum yok:
Yorum Gönder