blob: d543c753b3d83b3f7d99c7dfc5947fbca34fe421 [file] [log] [blame]
.. Sequences/Concepts//Extensible Associative Sequence |80
Extensible Associative Sequence
===============================
Description
-----------
An |Extensible Associative Sequence| is an |Associative Sequence| that supports
insertion and removal of elements. In contrast to |Extensible Sequence|,
|Extensible Associative Sequence| does not provide a mechanism for
inserting an element at a specific position.
Expression requirements
-----------------------
|In the following table...| ``s`` is an |Associative Sequence|,
``pos`` is an iterator into ``s``, and ``x`` and ``k`` are arbitrary types.
In addition to the |Associative Sequence| requirements, the following must be met:
+-------------------------------+---------------------------------------+---------------------------+
| Expression | Type | Complexity |
+===============================+=======================================+===========================+
| ``insert<s,x>::type`` | |Extensible Associative Sequence| | Amortized constant time |
+-------------------------------+---------------------------------------+---------------------------+
| ``insert<s,pos,x>::type`` | |Extensible Associative Sequence| | Amortized constant time |
+-------------------------------+---------------------------------------+---------------------------+
| ``erase_key<s,k>::type`` | |Extensible Associative Sequence| | Amortized constant time |
+-------------------------------+---------------------------------------+---------------------------+
| ``erase<s,pos>::type`` | |Extensible Associative Sequence| | Amortized constant time |
+-------------------------------+---------------------------------------+---------------------------+
| ``clear<s>::type`` | |Extensible Associative Sequence| | Amortized constant time |
+-------------------------------+---------------------------------------+---------------------------+
Expression semantics
--------------------
|Semantics disclaimer...| |Associative Sequence|.
+-------------------------------+-------------------------------------------------------------------+
| Expression | Semantics |
+===============================+===================================================================+
| ``insert<s,x>::type`` | Inserts ``x`` into ``s``; the resulting sequence ``r`` is |
| | equivalent to ``s`` except that |
| | :: |
| | |
| | at< r, key_type<s,x>::type >::type |
| | |
| | is identical to ``value_type<s,x>::type``; see |insert|. |
+-------------------------------+-------------------------------------------------------------------+
| ``insert<s,pos,x>::type`` | Equivalent to ``insert<s,x>::type``; ``pos`` is ignored; |
| | see |insert|. |
+-------------------------------+-------------------------------------------------------------------+
| ``erase_key<s,k>::type`` | Erases elements in ``s`` associated with the key ``k``; |
| | the resulting sequence ``r`` is equivalent to ``s`` except |
| | that ``has_key<r,k>::value == false``; see |erase_key|. |
+-------------------------------+-------------------------------------------------------------------+
| ``erase<s,pos>::type`` | Erases the element at a specific position; equivalent to |
| | ``erase_key<s, deref<pos>::type >::type``; see |erase|. |
+-------------------------------+-------------------------------------------------------------------+
| ``clear<s>::type`` | An empty sequence concept-identical to ``s``; see |
| | |clear|. |
+-------------------------------+-------------------------------------------------------------------+
.. Invariants
----------
For any extensible associative sequence ``s`` the following invariants always hold:
Models
------
* |set|
* |map|
.. * |multiset|
See also
--------
|Sequences|, |Associative Sequence|, |insert|, |erase|, |clear|
.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)