]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/doc/src/refmanual/erase.rst
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / erase.rst
1 .. Sequences/Intrinsic Metafunctions//erase
2
3 erase
4 =====
5
6 Synopsis
7 --------
8
9 .. parsed-literal::
10
11 template<
12 typename Sequence
13 , typename First
14 , typename Last = |unspecified|
15 >
16 struct erase
17 {
18 typedef |unspecified| type;
19 };
20
21
22
23 Description
24 -----------
25
26 ``erase`` performs a removal of one or more adjacent elements in the sequence
27 starting from an arbitrary position.
28
29 Header
30 ------
31
32 .. parsed-literal::
33
34 #include <boost/mpl/erase.hpp>
35
36
37 Model of
38 --------
39
40 |Tag Dispatched Metafunction|
41
42
43 Parameters
44 ----------
45
46 +---------------+-----------------------------------+-----------------------------------------------+
47 | Parameter | Requirement | Description |
48 +===============+===================================+===============================================+
49 | ``Sequence`` | |Extensible Sequence| or | A sequence to erase from. |
50 | | |Extensible Associative Sequence| | |
51 +---------------+-----------------------------------+-----------------------------------------------+
52 | ``First`` | |Forward Iterator| | An iterator to the beginning of the range to |
53 | | | be erased. |
54 +---------------+-----------------------------------+-----------------------------------------------+
55 | ``Last`` | |Forward Iterator| | An iterator past-the-end of the range to be |
56 | | | erased. |
57 +---------------+-----------------------------------+-----------------------------------------------+
58
59
60 Expression semantics
61 --------------------
62
63 .. compound::
64 :class: expression-semantics
65
66 For any |Extensible Sequence| ``s``, and iterators ``pos``, ``first`` and ``last`` into ``s``:
67
68
69 .. parsed-literal::
70
71 typedef erase<s,first,last>::type r;
72
73 :Return type:
74 |Extensible Sequence|.
75
76 :Precondition:
77 ``[first,last)`` is a valid range in ``s``.
78
79 :Semantics:
80 ``r`` is a new sequence, |concept-identical| to ``s``, of the following elements:
81 [``begin<s>::type``, ``pos``), [``last``, ``end<s>::type``).
82
83 :Postcondition:
84 The relative order of the elements in ``r`` is the same as in ``s``;
85
86 .. parsed-literal::
87
88 size<r>::value == size<s>::value - distance<first,last>::value
89
90
91 .. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92
93 .. parsed-literal::
94
95 typedef erase<s,pos>::type r;
96
97 :Return type:
98 |Extensible Sequence|.
99
100 :Precondition:
101 ``pos`` is a dereferenceable iterator in ``s``.
102
103 :Semantics:
104 Equivalent to
105
106 .. parsed-literal::
107
108 typedef erase< s,pos,next<pos>::type >::type r;
109
110
111
112 .. compound::
113 :class: expression-semantics
114
115 For any |Extensible Associative Sequence| ``s``, and iterator ``pos`` into ``s``:
116
117 .. parsed-literal::
118
119 typedef erase<s,pos>::type r;
120
121 :Return type:
122 |Extensible Sequence|.
123
124 :Precondition:
125 ``pos`` is a dereferenceable iterator to ``s``.
126
127 :Semantics:
128 Erases the element at a specific position ``pos``; equivalent to
129 ``erase_key<s, deref<pos>::type >::type``.
130
131 :Postcondition:
132 ``size<r>::value == size<s>::value - 1``.
133
134
135 Complexity
136 ----------
137
138 +---------------------------------------+-----------------------------------------------+
139 | Sequence archetype | Complexity (the range form) |
140 +=======================================+===============================================+
141 | |Extensible Associative Sequence| | Amortized constant time. |
142 +---------------------------------------+-----------------------------------------------+
143 | |Extensible Sequence| | Quadratic in the worst case, linear at best. |
144 +---------------------------------------+-----------------------------------------------+
145
146
147 Example
148 -------
149
150 .. parsed-literal::
151
152 typedef vector_c<int,1,0,5,1,7,5,0,5> values;
153 typedef find< values, integral_c<int,7> >::type pos;
154 typedef erase<values,pos>::type result;
155
156 BOOST_MPL_ASSERT_RELATION( size<result>::value, ==, 7 );
157
158 typedef find<result, integral_c<int,7> >::type iter;
159 BOOST_MPL_ASSERT(( is_same< iter, end<result>::type > ));
160
161
162 See also
163 --------
164
165 |Extensible Sequence|, |Extensible Associative Sequence|, |erase_key|, |pop_front|, |pop_back|, |insert|
166
167
168 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
169 Distributed under the Boost Software License, Version 1.0. (See accompanying
170 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)