A Pair Associative Container is an Associative Container that
associates a key with some other object. The value type of a
Pair Associative Container is pair<const key_type, data_type>. [1]
One new type is introduced, in addition to the types defined in the
Associative Container requirements. Additionally, Pair Associative
Container introduces one new type restriction
Key type
X::key_type
The type of the key associated with X::value_type.
Data type
X::data_type
The type of the data associated with X::value_type. A Pair Associative
Container can be thought of as a mapping from key_type to
data_type.
Value type
X::value_type
The type of object stored in the container. The value type is
required to be pair<const key_type, data_type>.
Notation
X
A type that is a model of Pair Associative Container
[1]
The value type must be pair<const key_type, data_type>,
rather than pair<key_type, data_type>, because of the
Associative Container invariant of key immutability. The
data_type part of an object in a Pair Associative Container may
be modified, but the key_type part may not be. Note the implication
of this fact: a Pair Associative Container cannot provide
mutable iterators (as defined in the Trivial Iterator
requirements), because the value type of a mutable iterator must
be Assignable, and pair<const key_type, data_type> is
not Assignable. However, a Pair Associative Container can
provide iterators that are not completely constant: iterators such
that the expression (*i).second = d is valid.