3rdParty/boost/1.78.0/libs/mpl/doc/src/refmanual/ExtensibleAssociativeSeq.rst
.. Sequences/Concepts//Extensible Associative Sequence |80
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.
|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 |
+-------------------------------+---------------------------------------+---------------------------+
|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|. |
+-------------------------------+-------------------------------------------------------------------+
For any extensible associative sequence s the following invariants always hold:
.. * |multiset|
|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)