# 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

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation