| 
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 of the elements in the range [i,j)
   that have unique keys.
 | 
size() is less than or equal to the distance from i to j.
 | 
| 
Insert element
 | 
a.insert(t)
 | 
 
 | 
Inserts t into a if and only if a does not already contain an
   element whose key is the same as the key of t.  The return value
   is a pair P.  P.first is an iterator pointing to the
   element whose key is the same as the key of t.  P.second is 
   a bool: it is true if t was actually inserted into a, and
   false if t was not inserted into a, i.e. if a already
   contained an element with the same key as t.
 | 
P.first is a dereferenceable iterator.  *(P.first) has the same
    key as t.  The size of a is incremented by 1 if and only if
    P.second is true.  
 | 
| 
Insert range
 | 
a.insert(i, j)
 | 
[i, j) is a valid range.
 | 
Equivalent to a.insert(t) for each object t that is pointed to
   by an iterator in the range [i, j).  Each element is inserted into
   a if and only if a does not already contain an element with 
   the same key.
 | 
The size of a is incremented by at most j - i.
 | 
| 
Count
 | 
a.count(k)
 | 
 
 | 
Returns the number of elements in a whose keys are the same as k.
 | 
The return value is either 0 or 1.
 |