Книга: Standard Template Library Programmer
Multiple Hashed Associative Container
Разделы на этой странице:
Multiple Hashed Associative Container
Category: containers
Component type: concept
Description
A Multiple Hashed Associative Container is a Hashed Associative Container that is also a Multiple Associative Container. That is, it is a Hashed Associative Container
with the property that any number of elements in the container may have the same key
Refinement of
Hashed Associative Container, Multiple Associative Container
Associated types
None, except for those described in the Hashed Associative Container and Multiple Associative Container requirements.
Notation
X
A type that is a model of Hashed Associative Container
a
Object of type X
t
Object of type X::value_type
k
Object of type X::key_type
p, q
Object of type X::iterator
nObject of type X::size_type
h
Object of type X::hasher
c
Object of type X::key_equal
Valid expressions
In addition to the expressions defined in Hashed Associative Container and and Multiple Associative Container, the following expressions must be valid.
Name | Expression | Type requirements | Return type |
---|---|---|---|
Range constructor | X(i, j)X a(i, j); |
i and j are Input Iterators whose value type is convertible to T [1]. | X |
Range constructor with bucket count | X(i, j, n)X a(i, j, n); |
i and j are Input Iterators whose value type is convertible to T [1]. | X |
Range constructor with hash function | X(i, j, n, h)X a(i, j, n, h); |
i and j are Input Iterators whose value type is convertible to T [1]. | X |
Range constructor with key equal | X(i, j, n, h, k)X a(i, j, n, h, k); |
i and j are Input Iterators whose value type is convertible to T [1]. | X |
Expression semantics
Name | Expression | Precondition | Semantics | Postcondition |
---|---|---|---|---|
Range constructor | X(i, j)X a(i, j); |
[i,j) is a valid range. | Creates an associative container that contains all elements in the range [i,j), using hasher() as the hash function and key_equal() as the key equality function. | size() is equal to the distance from i to j. The bucket count is an unspecified default value. The hash function is hasher(), and the key equality function is key_equal(). |
Range constructor with bucket count | X(i, j, n)X a(i, j, n); |
[i,j) is a valid range. | Creates an associative container that contains all elements in the range [i,j), using at least n buckets, and using hasher() as the hash function and key_equal() as the key equality function. | size() is equal to the distance from i to j. The bucket count is greater than or equal to n. The hash function is hasher(), and the key equality function is key_equal(). |
Range constructor with hash function | X(i, j, n, h)X a(i, j, n, h); |
[i,j) is a valid range. | Creates an associative container that contains all elements in the range [i,j), using at least n buckets, and using h as the hash function and key_equal() as the key equality function. size() is equal to the distance from i to j. | The bucket count is greater than or equal to n. The hash function is h, and the key equality function is key_equal(). |
Range constructor with key equal | X(i, j, n, h, k)X a(i, j, n, h, k); |
[i,j) is a valid range. | Creates an associative container that contains all elements in the range [i,j) , using at least n buckets, and using h as the hash function and k as the key equality function. | size() is equal to the distance from i to j. The bucket count is greater than or equal to n. The hash function is h , and the key equality function is k. |
Complexity guarantees
The range constructor, range constructor with bucket count, range constructor with hash function, and range constructor with key equal, are all linear in j – i.
Models
• hash_multiset
• hash_multimap
Notes
[1] At present (early 1998), not all compilers support "member templates". If your compiler supports member templates then i and j may be of any type that conforms to the Input Iterator requirements. If your compiler does not yet support member templates, however, then i and j must be of type const T* or of type X::const_iterator.
See also
Associative Container, Hashed Associative Container, Unique Hashed Associative Container, Sorted Associative Container
- Associative Container
- Simple Associative Container
- Pair Associative Container
- Sorted Associative Container
- Hashed Associative Container
- Hash Function
- Unique Associative Container
- Multiple Associative Container
- Unique Sorted Associative Container
- Multiple Sorted Associative Container
- Unique Hashed Associative Container
- Multiple Hashed Associative Container
- Multiple Associative Container
- Associative Container
- Associative Containers
- Simple Associative Container
- Pair Associative Container
- Sorted Associative Container
- Hashed Associative Container
- Unique Associative Container
- Unique Sorted Associative Container
- Multiple Sorted Associative Container
- Unique Hashed Associative Container
- Multiple Inheritance