Книга: Standard Template Library Programmer
hash
Разделы на этой странице:
hash<T>
Categories: containers, functors
Component type: type
Description
The function object hash<T> is a Hash Function; it is used as the default hash function by all of the Hashed Associative Containers that are included in the STL.
The hash<T> template is only defined for template arguments of type char*, const char*, crope, wrope, and the built-in integral types. [1] If you need a Hash Function with a different argument type, you must either provide your own template specialization or else use a different Hash Function.
Example
int main() {
hash<const char*> H;
cout << "foo –> " << H("foo") << endl;
cout << "bar –> " << H("bar") << endl;
}
Definition
Defined in the headers hash_map and hash_set, and in the backward-compatibility headers hash_map.h and hash_set.h. This class is an SGI extension; it is not part of the C++ standard.
Template parameters
Parameter | Description |
---|---|
T |
The argument type. That is, the type of object that is being hashed. |
Model of
Hash Function
Type requirements
T must be a type for which a specialization of hash has been defined. The STL defines the following specializations:
• char*
• const char*
• crope
• wrope
• char
• signed char
• unsigned char
• short
• unsigned short
• int
• unsigned int
• long
• unsigned long
Public base classes
None.
Members
Member | Where defined | Description |
---|---|---|
size_t operator()(const T& x) |
Hash Function | Returns x's hash value. |
New members
All of hash's members are defined in the Hash Function requirements. Hash does not introduce any new members.
Notes
[1] Technically, what this means is that the actual template hash<T> is an empty class; the member function operator() is defined only in the various specializations.
See also
Hashed Associative Container, Hash Function