Get the App
SLTechnology News&Howtos  ›  Internet Technology  › 

Why should C++ ensure that the hash will not throw an exception?

Shulou Source: shulou.com Published: 2022-06-01 19:12:11 09月21日 Update

This article mainly introduces "why C++ should ensure that the hash will not throw an exception". In the daily operation, I believe that many people have doubts about why C++ should ensure that the hash will not throw an exception. The editor looked up all kinds of data and sorted out a simple and easy-to-use method of operation. I hope it will be helpful to answer the doubt that "why should C++ ensure that the hash will not throw an exception?" Next, please follow the editor to study!

C.89: make sure that the hash does not throw an exception

Reason (reason)

Users of the hash container indirectly use the hash function and do not want an exception to occur in a simple operation. This is the requirement of the standard library.

Example, bad (negative example)

Template

Struct hash {/ / thoroughly bad hash specialization

Using result_type = size_t

Using argument_type = My_type

Size_t operator () (const My_type & x) const

{

Size_t xs = x.s.size ()

If (xs < 4) throw Bad_My_type {}; / / "Nobody expects the Spanish inquisition!"

Return hash () (x.s.size ()) ^ trim (x.s)

}

}

Int main ()

{

Unordered_map m

My_type mt {"asdfg"}

M [mt] = 7

Cout

Tags: Hash guarantee Clearing Learning more Standard Specialization help practical next function reason negative Container suggestion article method Theory user knowledge Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Redmi Shulou Tech Info MariaDB vpn Shulou Technology