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
|
Default
|
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