# `container_base` Interface

An abstract basic associative container.

Defined in: `assoc_container.hpp`

## Template Parameters

Parameter | Description | Default Value
    typename Key
| Key type. | -
    typename Mapped
| Mapped type. | -
    class Tag
| Data structure tag. | -
    class Policy_Tl
| Policy typelist. Contains subclasses' policies. | -
    class Allocator
| Allocator type. | -

## Public Types and Constants

### General Container Definitions

Type | Definition | Description
    size_type
    typename Allocator::size_type
| Size type.
    difference_type
    typename Allocator::difference_type
| Difference type.

### Categories

Type | Definition | Description
    container_category
    Tag
| The underlying mapped-structure tag of the container. This is one of: `cc_hash_tag` `gp_hash_tag` `rb_tree_tag` `ov_tree_tag` `splay_tree_tag` `pat_trie_tag` `list_update_tag`

### Policy Definitions

Type | Definition | Description
    allocator
    Allocator
| `Allocator` type.

### Key-Type Definitions

Type | Definition | Description
    key_type
    typename allocator::template rebind<
        Key>::other::value_type
| `Key` type.
    key_reference
    typename allocator::template rebind<
        key_type>::other::reference
| `Key` reference type.
    const_key_reference
    typename allocator::template rebind<
        key_type>::other::const_reference
| Const key reference type.
    key_pointer
    typename allocator::template rebind<
        key_type>::other::pointer
| `Key` pointer type.
    const_key_pointer
    typename allocator::template rebind<
        key_type>::other::const_pointer
| Const key pointer type.

### Mapped-Type Definitions

Type | Definition | Description
    mapped_type
    Mapped
| `Mapped` type.
    mapped_reference
    typename allocator::template rebind<
        mapped_type>::other::reference
| `Mapped` reference type.
    const_mapped_reference
    typename allocator::template rebind<
        mapped_type>::other::const_reference
| Const mapped reference type.
    mapped_pointer
    typename allocator::template rebind<
        mapped_type>::other::pointer
| `Mapped` pointer type.
    const_mapped_pointer
    typename allocator::template rebind<
        mapped_type>::other::const_pointer
| Const mapped pointer type.

### Value-Type Definitions

Type | Definition | Description
    value_type
    If Mapped is null_mapped_type, then Key

    Otherwise, Mapped
| Value type.
    reference
    typename allocator::template rebind<
        value_type>::other::reference
| Value reference type.
    const_reference
    typename allocator::template rebind<
        value_type>::other::const_reference
| Const value `reference` type.
    pointer
    typename allocator::template rebind<
        value_type>::other::pointer
| Value pointer type.
    const_pointer
    typename allocator::template rebind<
        value_type>::other::const_pointer
| Const Value `pointer` type.

### Iterator Definitions

Type | Definition | Description
    const_point_iterator
    Const point-type iterator.
| Const point-type iterator.
    point_iterator
    Point-type iterator.

    If Mapped is null_mapped_type, then this is synonymous to const_point_iterator
| Point-type iterator.
    const_iterator
    Const range-type iterator.
| Const range-type iterator.
    iterator
    Range-type iterator.

    If Mapped is null_mapped_type, then this is synonymous to const_iterator
| Range-type iterator.

## Public Methods

### Constructors, Destructor, and Related

Method | Description
    virtual
      ~container_base
      ()
| Destructor.

### Information Methods

Method | Description
    inline size_type
      size
      () const
| Returns the number of distinct `value_type` objects the container object is storing.
    inline size_type
      max_size
      () const
| Returns an upper bound on the number of distinct `value_type` objects this container can store.
    inline bool
      empty
      () const
| Returns whether the container object is not storing any `value_type` objects.

### Insert Methods

Method | Description
    std::pair<point_iterator, bool>
      insert
      (const_reference r_val)
| Inserts a `value_type` object. If no `value_type` with `r_val`'s key was in the container object, inserts and returns (`point_iterator` object associated with `r_val`, `true`); otherwise just returns (`point_iterator` object associated with `r_val`'s key, `false`).
    mapped_reference
      operator[]
      (const_key_reference r_key)
| Subscript operator.

### Find Methods

Method | Description
    point_iterator
      find
      (const_key_reference r_key)
| Returns the `point_iterator` corresponding to the `value_type` with `r_key` as its key, or the `point_iterator` corresponding to the just-after-last entry if no such `value_type`.
    const_point_iterator
      find
      (const_key_reference r_key) const
| Returns the `const_point_iterator` corresponding to the `value_type` with `r_key` as its key, or the `const_point_iterator` corresponding to the just-after-last entry if no such `value_type`.

### Erase Methods

Method | Description
    bool
      erase
      (const_key_reference r_key)
| Erases the `value_type` associated with `r_key`. returns `false` iff `r_key` was not contained.
    template<
      class Pred>
    size_type
      erase_if
      (Pred prd)
| Erases any `value_type` satisfying the predicate `prd` (this is transactional, either all matching `value_type`s are erased, or, if an exception is thrown (for types whose erase can throw an exception) none); returns the number of `value_type`s erased.
    void
      clear
      ()
| Clears the container object.

### Iteration Methods

Method | Description
    iterator
      begin
      ()
| Returns an `iterator` corresponding to the first `value_type` in the container.
    const_iterator
      begin
      () const
| Returns a `const_iterator` corresponding to the first `value_type` in the container.
    iterator
      end
      ()
| Returns an `iterator` corresponding to the just-after-last `value_type` in the container.
    const_iterator
      end
      () const
| Returns a `const_iterator` corresponding to the just-after-last `value_type` in the container.