]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/multi_index/doc/reference/multi_index_container.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / multi_index / doc / reference / multi_index_container.html
CommitLineData
7c673cae
FG
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN">
2
3<html>
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
6<title>Boost.MultiIndex Documentation - multi_index_container reference</title>
7<link rel="stylesheet" href="../style.css" type="text/css">
8<link rel="start" href="../index.html">
9<link rel="prev" href="index.html">
10<link rel="up" href="index.html">
11<link rel="next" href="indices.html">
12</head>
13
14<body>
15<h1><img src="../../../../boost.png" alt="boost.png (6897 bytes)" align=
16"middle" width="277" height="86">Boost.MultiIndex
17<code>multi_index_container</code> reference</h1>
18
19<div class="prev_link"><a href="index.html"><img src="../prev.gif" alt="Boost.MultiIndex reference" border="0"><br>
20Boost.MultiIndex reference
21</a></div>
22<div class="up_link"><a href="index.html"><img src="../up.gif" alt="Boost.MultiIndex reference" border="0"><br>
23Boost.MultiIndex reference
24</a></div>
25<div class="next_link"><a href="indices.html"><img src="../next.gif" alt="index reference" border="0"><br>
26Index reference
27</a></div><br clear="all" style="clear: all;">
28
29<hr>
30
31<h2>Contents</h2>
32
33<ul>
34 <li><a href="#multi_index_container_fwd_synopsis">Header
35 <code>"boost/multi_index_container_fwd.hpp"</code> synopsis</a></li>
36 <li><a href="#synopsis">Header
37 <code>"boost/multi_index_container.hpp"</code> synopsis</a>
38 <ul>
39 <li><a href="#multi_index_container">Class template <code>multi_index_container</code></a>
40 <ul>
41 <li><a href="#complexity">Complexity</a></li>
42 <li><a href="#instantiation_types">Instantiation types</a></li>
43 <li><a href="#types">Nested types</a></li>
44 <li><a href="#nested_templates">Nested class templates</a></li>
45 <li><a href="#constructors">Constructors, copy and assignment</a></li>
46 <li><a href="#index_retrieval">Index retrieval operations</a></li>
47 <li><a href="#projection">Projection operations</a></li>
48 <li><a href="#serialization">Serialization</a></li>
49 </ul>
50 </li>
51 </ul>
52 </li>
53</ul>
54
55<h2>
56<a name="multi_index_container_fwd_synopsis">Header
57<a href="../../../../boost/multi_index_container_fwd.hpp"><code>"boost/multi_index_container_fwd.hpp"</code></a>
58synopsis</a>
59</h2>
60
61<blockquote><pre>
62<span class=keyword>namespace</span> <span class=identifier>boost</span><span class=special>{</span>
63
64<span class=keyword>namespace</span> <span class=identifier>multi_index</span><span class=special>{</span>
65
66<span class=keyword>template</span><span class=special>&lt;</span>
67 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span>
68 <span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>=</span><span class=identifier>indexed_by</span><span class=special>&lt;</span><span class=identifier>ordered_unique</span><span class=special>&lt;</span><span class=identifier>identity</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=special>&gt;</span> <span class=special>&gt;,</span>
69 <span class=keyword>typename</span> <span class=identifier>Allocator</span><span class=special>=</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>allocator</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=special>&gt;</span>
70<span class=keyword>class</span> <span class=identifier>multi_index_container</span><span class=special>;</span>
71
72<span class=special>}</span> <span class=comment>// namespace boost::multi_index</span>
73
74<span class=keyword>using</span> <span class=identifier>multi_index</span><span class=special>::</span><span class=identifier>multi_index_container</span><span class=special>;</span>
75
76<span class=special>}</span> <span class=comment>// namespace boost</span>
77</pre></blockquote>
78
79<p>
80<code>multi_index_container_fwd.hpp</code> forward declares the class template
81<a href="#multi_index_container"><code>multi_index_container</code></a> and specifies its default parameters.
82</p>
83
84<h2>
85<a name="synopsis">Header
86<a href="../../../../boost/multi_index_container.hpp"><code>"boost/multi_index_container.hpp"</code></a>
87synopsis</a>
88</h2>
89
90<blockquote><pre>
91<span class=preprocessor>#include</span> <span class=special>&lt;</span><span class=identifier>initializer_list</span><span class=special>&gt;</span>
92
93<span class=keyword>namespace</span> <span class=identifier>boost</span><span class=special>{</span>
94
95<span class=keyword>namespace</span> <span class=identifier>multi_index</span><span class=special>{</span>
96
97<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span><span class=special>&gt;</span>
98<span class=keyword>class</span> <span class=identifier>multi_index_container</span><span class=special>;</span>
99
100<span class=comment>// multi_index_container associated global class templates:</span>
101
102<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span> <span class=keyword>struct</span> <span class=identifier>nth_index</span><span class=special>;</span>
103<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span> <span class=keyword>struct</span> <span class=identifier>index</span><span class=special>;</span>
104
105<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
106<span class=keyword>struct</span> <span class=identifier>nth_index_iterator</span><span class=special>;</span> <span class=comment><b>// deprecated</b></span>
107<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
108<span class=keyword>struct</span> <span class=identifier>nth_index_const_iterator</span><span class=special>;</span> <span class=comment><b>// deprecated</b></span>
109<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
110<span class=keyword>struct</span> <span class=identifier>index_iterator</span><span class=special>;</span> <span class=comment><b>// deprecated</b></span>
111<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
112<span class=keyword>struct</span> <span class=identifier>index_const_iterator</span><span class=special>;</span> <span class=comment><b>// deprecated</b></span>
113
114<span class=comment>// multi_index_container global functions for index retrieval:</span>
115
116<span class=keyword>template</span><span class=special>&lt;</span>
117 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
118<span class=special>&gt;</span>
119<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
120 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
121<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
122<span class=identifier>get</span><span class=special>(</span><span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span><span class=special>;</span>
123
124<span class=keyword>template</span><span class=special>&lt;</span>
125 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
126<span class=special>&gt;</span>
127<span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
128 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
129<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
130<span class=identifier>get</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span><span class=special>;</span>
131
132<span class=keyword>template</span><span class=special>&lt;</span>
133 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
134<span class=special>&gt;</span>
135<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
136 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
137<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
138<span class=identifier>get</span><span class=special>(</span><span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span><span class=special>;</span>
139
140<span class=keyword>template</span><span class=special>&lt;</span>
141 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
142<span class=special>&gt;</span>
143<span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
144 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
145<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
146<span class=identifier>get</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span><span class=special>;</span>
147
148<span class=comment>// multi_index_container global functions for projection of iterators:</span>
149
150<span class=keyword>template</span><span class=special>&lt;</span>
151 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
152 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
153<span class=special>&gt;</span>
154<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
155 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
156<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span>
157<span class=identifier>project</span><span class=special>(</span>
158 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
159 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
160
161<span class=keyword>template</span><span class=special>&lt;</span>
162 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
163 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
164<span class=special>&gt;</span>
165<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
166 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
167<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span>
168<span class=identifier>project</span><span class=special>(</span>
169 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
170 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
171
172<span class=keyword>template</span><span class=special>&lt;</span>
173 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
174 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
175<span class=special>&gt;</span>
176<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
177 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
178<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span>
179<span class=identifier>project</span><span class=special>(</span>
180 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
181 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
182
183<span class=keyword>template</span><span class=special>&lt;</span>
184 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
185 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
186<span class=special>&gt;</span>
187<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
188 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
189<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span>
190<span class=identifier>project</span><span class=special>(</span>
191 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
192 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
193
194<span class=comment>// comparison:</span>
195
196<span class=comment>// <b>OP</b> is any of ==,&lt;,!=,&gt;,&gt;=,&lt;=</span>
197
198<span class=keyword>template</span><span class=special>&lt;</span>
199 <span class=keyword>typename</span> <span class=identifier>Value1</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList1</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator1</span><span class=special>,</span>
200 <span class=keyword>typename</span> <span class=identifier>Value2</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList2</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator2</span>
201<span class=special>&gt;</span>
202<span class=keyword>bool</span> <span class=keyword>operator</span> <b><i>OP</i></b><span class=special>(</span>
203 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value1</span><span class=special>,</span><span class=identifier>IndexSpecifierList1</span><span class=special>,</span><span class=identifier>Allocator1</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>,</span>
204 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value2</span><span class=special>,</span><span class=identifier>IndexSpecifierList2</span><span class=special>,</span><span class=identifier>Allocator2</span><span class=special>&gt;&amp;</span> <span class=identifier>y</span><span class=special>);</span>
205
206<span class=comment>// specialized algorithms:</span>
207
208<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span><span class=special>&gt;</span>
209<span class=keyword>void</span> <span class=identifier>swap</span><span class=special>(</span>
210 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>,</span>
211 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>y</span><span class=special>);</span>
212
213<span class=special>}</span> <span class=comment>// namespace boost::multi_index</span>
214
215<span class=keyword>using</span> <span class=identifier>multi_index</span><span class=special>::</span><span class=identifier>multi_index_container</span><span class=special>;</span>
216<span class=keyword>using</span> <span class=identifier>multi_index</span><span class=special>::</span><span class=identifier>get</span><span class=special>;</span>
217<span class=keyword>using</span> <span class=identifier>multi_index</span><span class=special>::</span><span class=identifier>project</span><span class=special>;</span>
218
219<span class=special>}</span> <span class=comment>// namespace boost</span>
220</pre></blockquote>
221
222<h3><a name="multi_index_container">
223Class template <code>multi_index_container</code>
224</a></h3>
225
226<p>
227This is the main component of Boost.MultiIndex. A <code>multi_index_container</code>
228is a container class template holding a compile-time user-defined list of
229<a href="indices.html">indices</a>. These indices provide different interfaces
230for the management of the elements of the <code>multi_index_container</code>. By itself,
231<code>multi_index_container</code> only provides basic functionality for construction
232and for access to the indices held.
233</p>
234
235<p>
236A <code>multi_index_container</code> type is instantiated with the type of the
237elements contained and a non-empty
238<a href="../../../../libs/mpl/doc/refmanual/forward-sequence.html">
239<code>MPL Forward Sequence</code></a> specifying which indices conform the
240class.
241</p>
242
243<p>
244For convenience of use, all public methods and types of the first index
245specified are inherited by <code>multi_index_container</code>. This also includes global
246operators and functions associated with the index (vg. comparison and
247<code>swap</code>.)
248</p>
249
250<blockquote><pre>
251<span class=keyword>template</span><span class=special>&lt;</span>
252 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span>
253 <span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>=</span><span class=identifier>indexed_by</span><span class=special>&lt;</span><span class=identifier>ordered_unique</span><span class=special>&lt;</span><span class=identifier>identity</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=special>&gt;</span> <span class=special>&gt;,</span>
254 <span class=keyword>typename</span> <span class=identifier>Allocator</span><span class=special>=</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>allocator</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=special>&gt;</span>
255<span class=keyword>class</span> <span class=identifier>multi_index_container</span>
256<span class=special>{</span>
257<span class=keyword>public</span><span class=special>:</span>
258
259 <span class=comment>// types:</span>
260
261 <span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>ctor_args_list</span><span class=special>;</span>
262 <span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>index_specifier_type_list</span><span class=special>;</span>
263 <span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>index_type_list</span><span class=special>;</span>
264 <span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>iterator_type_list</span><span class=special>;</span>
265 <span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>const_iterator_type_list</span><span class=special>;</span>
266 <span class=keyword>typedef</span> <span class=identifier>Allocator</span> <span class=identifier>allocator_type</span><span class=special>;</span>
267
268 <span class=comment>// nested class templates:</span>
269
270 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
271 <span class=keyword>struct</span> <span class=identifier>nth_index</span> <span class=special>{</span><span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>type</span><span class=special>;};</span>
272 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
273 <span class=keyword>struct</span> <span class=identifier>index</span> <span class=special>{</span><span class=keyword>typedef</span> <b>implementation defined</b> <span class=identifier>type</span><span class=special>;};</span>
274
275 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
276 <span class=keyword>struct</span> <span class=identifier>nth_index_iterator</span> <span class=comment><b>// deprecated</b></span>
277 <span class=special>{</span><span class=keyword>typedef</span> <b><span class=identifier>implementation</span> <span class=identifier>defined</span></b> <span class=identifier>type</span><span class=special>;};</span>
278 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
279 <span class=keyword>struct</span> <span class=identifier>nth_index_const_iterator</span> <span class=comment><b>// deprecated</b></span>
280 <span class=special>{</span><span class=keyword>typedef</span> <b><span class=identifier>implementation</span> <span class=identifier>defined</span></b> <span class=identifier>type</span><span class=special>;};</span>
281 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
282 <span class=keyword>struct</span> <span class=identifier>index_iterator</span> <span class=comment><b>// deprecated</b></span>
283 <span class=special>{</span><span class=keyword>typedef</span> <b><span class=identifier>implementation</span> <span class=identifier>defined</span></b> <span class=identifier>type</span><span class=special>;};</span>
284 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
285 <span class=keyword>struct</span> <span class=identifier>index_const_iterator</span> <span class=comment><b>// deprecated</b></span>
286 <span class=special>{</span><span class=keyword>typedef</span> <b><span class=identifier>implementation</span> <span class=identifier>defined</span></b> <span class=identifier>type</span><span class=special>;};</span>
287
288 <span class=comment>// construct/copy/destroy:</span>
289
290 <span class=keyword>explicit</span> <span class=identifier>multi_index_container</span><span class=special>(
291 </span><span class=keyword>const</span> <span class=identifier>ctor_args_list</span><span class=special>&amp;</span> <span class=identifier>args_list</span><span class=special>=</span><span class=identifier>ctor_args_list</span><span class=special>(),
292 </span><span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>=</span><span class=identifier>allocator_type</span><span class=special>());</span>
293 <span class=keyword>explicit</span> <span class=identifier>multi_index_container</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>);</span>
294 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>InputIterator</span><span class=special>&gt;</span>
295 <span class=identifier>multi_index_container</span><span class=special>(</span>
296 <span class=identifier>InputIterator</span> <span class=identifier>first</span><span class=special>,</span><span class=identifier>InputIterator</span> <span class=identifier>last</span><span class=special>,</span>
297 <span class=keyword>const</span> <span class=identifier>ctor_args_list</span><span class=special>&amp;</span> <span class=identifier>args_list</span><span class=special>=</span><span class=identifier>ctor_args_list</span><span class=special>(),
298 </span><span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>=</span><span class=identifier>allocator_type</span><span class=special>());</span>
299 <span class=identifier>multi_index_container</span><span class=special>(</span>
300 <span class=identifier>std</span><span class=special>::</span><span class=identifier>initializer_list</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=identifier>list</span><span class=special>,</span>
301 <span class=keyword>const</span> <span class=identifier>ctor_args_list</span><span class=special>&amp;</span> <span class=identifier>args_list</span><span class=special>=</span><span class=identifier>ctor_args_list</span><span class=special>(),</span>
302 <span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>=</span><span class=identifier>allocator_type</span><span class=special>());</span>
303 <span class=identifier>multi_index_container</span><span class=special>(</span>
304 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>);</span>
305 <span class=identifier>multi_index_container</span><span class=special>(</span>
306 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;&amp;</span> <span class=identifier>x</span><span class=special>);</span>
307
308 <span class=special>~</span><span class=identifier>multi_index_container</span><span class=special>();</span>
309
310 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=keyword>operator</span><span class=special>=(</span>
311 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>);</span>
312 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=keyword>operator</span><span class=special>=(</span>
313 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;&amp;</span> <span class=identifier>x</span><span class=special>);</span>
314 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=keyword>operator</span><span class=special>=(</span>
315 <span class=identifier>std</span><span class=special>::</span><span class=identifier>initializer_list</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>&gt;</span> <span class=identifier>list</span><span class=special>)</span>
316
317 <span class=identifier>allocator_type</span> <span class=identifier>get_allocator</span><span class=special>()</span><span class=keyword>const</span> <span class=keyword>noexcept</span><span class=special>;</span>
318
319 <span class=comment>// retrieval of indices</span>
320
321 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span> <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span> <span class=identifier>get</span><span class=special>()</span><span class=keyword>noexcept</span><span class=special>;</span>
322 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span> <span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span> <span class=identifier>get</span><span class=special>()</span><span class=keyword>const</span> <span class=keyword>noexcept</span><span class=special>;</span>
323 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span> <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span> <span class=identifier>get</span><span class=special>()</span><span class=keyword>noexcept</span><span class=special>;</span>
324 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span> <span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span> <span class=identifier>get</span><span class=special>()</span><span class=keyword>const</span> <span class=keyword>noexcept</span><span class=special>;</span>
325
326 <span class=comment>// projection of iterators</span>
327
328 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>&gt;</span>
329 <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span> <span class=identifier>project</span><span class=special>(</span><span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
330 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>&gt;</span>
331 <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span> <span class=identifier>project</span><span class=special>(</span><span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span><span class=keyword>const</span><span class=special>;</span>
332 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>&gt;</span>
333 <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span> <span class=identifier>project</span><span class=special>(</span><span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>);</span>
334 <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>&gt;</span>
335 <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span> <span class=identifier>project</span><span class=special>(</span><span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span><span class=keyword>const</span><span class=special>;</span>
336<span class=special>};</span>
337
338<span class=comment>// multi_index_container associated global class templates:</span>
339
340<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span> <span class=keyword>struct</span> <span class=identifier>nth_index</span>
341<span class=special>{</span>
342 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>nth_index</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
343<span class=special>};</span>
344
345<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span> <span class=keyword>struct</span> <span class=identifier>index</span>
346<span class=special>{</span>
347 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>index</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
348<span class=special>};</span>
349
350<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
351<span class=keyword>struct</span> <span class=identifier>nth_index_iterator</span> <span class=comment><b>// deprecated</b></span>
352<span class=special>{</span>
353 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>nth_index_iterator</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
354<span class=special>};</span>
355
356<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>int</span> <span class=identifier>N</span><span class=special>&gt;</span>
357<span class=keyword>struct</span> <span class=identifier>nth_index_const_iterator</span> <span class=comment><b>// deprecated</b></span>
358<span class=special>{</span>
359 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>nth_index_const_iterator</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
360<span class=special>};</span>
361
362<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
363<span class=keyword>struct</span> <span class=identifier>index_iterator</span> <span class=comment><b>// deprecated</b></span>
364<span class=special>{</span>
365 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>index_iterator</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
366<span class=special>};</span>
367
368<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>&gt;</span>
369<span class=keyword>struct</span> <span class=identifier>index_const_iterator</span> <span class=comment><b>// deprecated</b></span>
370<span class=special>{</span>
371 <span class=keyword>typedef</span> <span class=keyword>typename</span> <span class=identifier>MultiIndexContainer</span><span class=special>::</span><span class=identifier>index_const_iterator</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>type</span><span class=special>;</span>
372<span class=special>};</span>
373
374<span class=comment>// multi_index_container global functions for index retrieval:</span>
375
376<span class=keyword>template</span><span class=special>&lt;</span>
377 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
378<span class=special>&gt;</span>
379<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
380 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
381<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
382<span class=identifier>get</span><span class=special>(</span><span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span>
383<span class=special>{</span>
384 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=identifier>get</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;();</span>
385<span class=special>}</span>
386
387<span class=keyword>template</span><span class=special>&lt;</span>
388 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
389<span class=special>&gt;</span>
390<span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
391 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
392<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
393<span class=identifier>get</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span>
394<span class=special>{</span>
395 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=identifier>get</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;();</span>
396<span class=special>}</span>
397
398<span class=keyword>template</span><span class=special>&lt;</span>
399 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
400<span class=special>&gt;</span>
401<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
402 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
403<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
404<span class=identifier>get</span><span class=special>(</span><span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span>
405<span class=special>{</span>
406 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=identifier>get</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;();</span>
407<span class=special>}</span>
408
409<span class=keyword>template</span><span class=special>&lt;</span>
410 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
411<span class=special>&gt;</span>
412<span class=keyword>const</span> <span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
413 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
414<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>&amp;</span>
415<span class=identifier>get</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>)</span><span class=keyword>noexcept</span>
416<span class=special>{</span>
417 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=identifier>get</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;();</span>
418<span class=special>}</span>
419
420<span class=comment>// multi_index_container global functions for projection of iterators:</span>
421
422<span class=keyword>template</span><span class=special>&lt;</span>
423 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
424 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
425<span class=special>&gt;</span>
426<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
427 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
428<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span>
429<span class=identifier>project</span><span class=special>(</span>
430 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
431 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span>
432<span class=special>{</span>
433 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=keyword>template</span> <span class=identifier>project</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;(</span><span class=identifier>it</span><span class=special>);</span>
434<span class=special>}</span>
435
436<span class=keyword>template</span><span class=special>&lt;</span>
437 <span class=keyword>int</span> <span class=identifier>N</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
438 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
439<span class=special>&gt;</span>
440<span class=keyword>typename</span> <span class=identifier>nth_index</span><span class=special>&lt;</span>
441 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>N</span>
442<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span>
443<span class=identifier>project</span><span class=special>(</span>
444 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
445 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span>
446<span class=special>{</span>
447 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=keyword>template</span> <span class=identifier>project</span><span class=special>&lt;</span><span class=identifier>N</span><span class=special>&gt;(</span><span class=identifier>it</span><span class=special>);</span>
448<span class=special>}</span>
449
450<span class=keyword>template</span><span class=special>&lt;</span>
451 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
452 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
453<span class=special>&gt;</span>
454<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
455 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
456<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>iterator</span>
457<span class=identifier>project</span><span class=special>(</span>
458 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
459 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span>
460<span class=special>{</span>
461 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=keyword>template</span> <span class=identifier>project</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;(</span><span class=identifier>it</span><span class=special>);</span>
462<span class=special>}</span>
463
464<span class=keyword>template</span><span class=special>&lt;</span>
465 <span class=keyword>typename</span> <span class=identifier>Tag</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IteratorType</span><span class=special>,</span>
466 <span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span>
467<span class=special>&gt;</span>
468<span class=keyword>typename</span> <span class=identifier>index</span><span class=special>&lt;</span>
469 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;,</span><span class=identifier>Tag</span>
470<span class=special>&gt;::</span><span class=identifier>type</span><span class=special>::</span><span class=identifier>const_iterator</span>
471<span class=identifier>project</span><span class=special>(</span>
472 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>m</span><span class=special>,</span>
473 <span class=identifier>IteratorType</span> <span class=identifier>it</span><span class=special>)</span>
474<span class=special>{</span>
475 <span class=keyword>return</span> <span class=identifier>m</span><span class=special>.</span><span class=keyword>template</span> <span class=identifier>project</span><span class=special>&lt;</span><span class=identifier>Tag</span><span class=special>&gt;(</span><span class=identifier>it</span><span class=special>);</span>
476<span class=special>}</span>
477
478<span class=comment>// comparison:</span>
479
480<span class=comment>// <b>OP</b> is any of ==,&lt;,!=,&gt;,&gt;=,&lt;=</span>
481
482<span class=keyword>template</span><span class=special>&lt;</span>
483 <span class=keyword>typename</span> <span class=identifier>Value1</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList1</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator1</span><span class=special>,</span>
484 <span class=keyword>typename</span> <span class=identifier>Value2</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList2</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator2</span>
485<span class=special>&gt;</span>
486<span class=keyword>bool</span> <span class=keyword>operator</span> <b><i>OP</i></b><span class=special>(</span>
487 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value1</span><span class=special>,</span><span class=identifier>IndexSpecifierList1</span><span class=special>,</span><span class=identifier>Allocator1</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>,</span>
488 <span class=keyword>const</span> <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value2</span><span class=special>,</span><span class=identifier>IndexSpecifierList2</span><span class=special>,</span><span class=identifier>Allocator2</span><span class=special>&gt;&amp;</span> <span class=identifier>y</span><span class=special>)</span>
489 <span class=special>{</span>
490 <span class=keyword>return</span> <span class=identifier>get</span><span class=special>&lt;</span><span class=number>0</span><span class=special>&gt;(</span><span class=identifier>x</span><span class=special>)</span> <b><i>OP</i></b> <span class=identifier>get</span><span class=special>&lt;</span><span class=number>0</span><span class=special>&gt;(</span><span class=identifier>y</span><span class=special>);</span>
491 <span class=special>}</span>
492
493<span class=comment>// specialized algorithms:</span>
494
495<span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>Value</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=keyword>typename</span> <span class=identifier>Allocator</span><span class=special>&gt;</span>
496<span class=keyword>void</span> <span class=identifier>swap</span><span class=special>(</span>
497 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span><span class=special>,</span>
498 <span class=identifier>multi_index_container</span><span class=special>&lt;</span><span class=identifier>Value</span><span class=special>,</span><span class=identifier>IndexSpecifierList</span><span class=special>,</span><span class=identifier>Allocator</span><span class=special>&gt;&amp;</span> <span class=identifier>y</span><span class=special>)</span>
499 <span class=special>{</span>
500 <span class=identifier>x</span><span class=special>.</span><span class=identifier>swap</span><span class=special>(</span><span class=identifier>y</span><span class=special>);</span>
501 <span class=special>}</span>
502
503<span class=special>}</span> <span class=comment>// namespace boost::multi_index</span>
504
505<span class=special>}</span> <span class=comment>// namespace boost</span>
506</pre></blockquote>
507
508<h4><a name="complexity">Complexity</a></h4>
509
510<p>
511In the descriptions of operations of <code>multi_index_container</code>, we adopt the
512scheme outlined in the
513<a href="indices.html#complexity_signature">complexity signature section</a>.
514</p>
515
516<h4><a name="instantiation_types">Instantiation types</a></h4>
517
518<p>
519<code>multi_index_container</code> is instantiated with the following types:
520<ol>
521 <li><code>Value</code> is the type of the elements contained. <code>Value</code> must be
522 <code>Erasable</code> from <code>multi_index_container</code>.
523 </li>
524 <li><code>IndexSpecifierList</code> specifies the indices that the
525 <code>multi_index_container</code> is composed of. It must be a non-empty
526 <a href="../../../../libs/mpl/doc/refmanual/forward-sequence.html">
527 <code>MPL Forward Sequence</code></a> (and, preferrably,
528 an <a href="../../../../libs/mpl/doc/refmanual/random-access-sequence.html">
529 <code>MPL Random Access Sequence</code></a>) of index specifiers. For
530 syntactic convenience, the
531 <a href="indices.html#indexed_by"><code>indexed_by</code></a>
532 MPL sequence can be used.
533 </li>
534 <li><code>Allocator</code> must be an allocator of <code>Value</code> objects
535 satisfying the associated C++ requirements at <b>[allocator.requirements]</b>.
536 The following relaxations to the standard requirements are allowed:
537 <ul>
538 <li>Non-equal allocator instances are supported: swapping two non-equal
539 instances must not throw any exception.
540 </li>
541 <li>For every type <code>T</code>,
542 the type <code>Allocator::rebind&lt;T&gt;::other::pointer</code> can be any
543 kind of random access iterator, provided that it is explicitly constructible from
544 the literal <code>0</code> (standing here as the null pointer) or from any
545 <code>p</code> of type <code>T*</code> pointing into an area allocated by
546 some instance of <code>Allocator</code> or some other allocator type rebound
547 from <code>Allocator</code>. A <code>pointer</code> constructed from
548 <code>p</code> shall dereference to <code>*p</code>.
549 </li>
550 </ul>
551 </li>
552</ol>
553Indices of a given <code>multi_index_container</code> instantiation cannot have
554duplicate <a href="indices.html#tags">tags</a>, either within a single
555index or in two different indices.
556</p>
557
558<h4><a name="types">Nested types</a></h4>
559
560<code>ctor_args_list</code>
561
562<blockquote>
563Although the exact definition of <code>ctor_args_list</code> is
564implementation defined, from the user point of view this type can be
565treated as equivalent to
566<code>::boost::tuple&lt;C<sub>0</sub>,...,C<sub>I-1</sub>></code>,
567where <code>C<sub>i</sub></code> is the <code>ctor_args</code> type of the
568<code>i</code>-th index held by the <code>multi_index_container</code>, in the
569same order as they were specified. Strictly speaking, there is an
570implicit conversion from
571<code>const ::boost::tuple&lt;C<sub>0</sub>,...,C<sub>I-1</sub>>&amp;</code>
572to <code>const ctor_args_list&amp;</code>. This type is used for
573providing the construction arguments of the indices of the
574<code>multi_index_container</code>. <code>ctor_args_list</code> is
575<code>DefaultConstructible</code>, provided that all <code>ctor_args</code> types
576involved are <code>DefaultConstructible</code>.
577</blockquote>
578
579<code>index_specifier_type_list</code>
580
581<blockquote>
582Same type as <code>IndexSpecifierList</code>.
583</blockquote>
584
585<code>index_type_list</code>
586
587<blockquote>
588Model of
589<a href="../../../../libs/mpl/doc/refmanual/random-access-sequence.html">
590<code>MPL Random Access Sequence</code></a> and
591<a href="../../../../libs/mpl/doc/refmanual/extensible-sequence.html">
592<code>MPL Extensible Sequence</code></a> containing the types of the indices held by
593the <code>multi_index_container</code>, in the same order as they were specified.
594</blockquote>
595
596<code>iterator_type_list</code>
597
598<blockquote>
599Model of
600<a href="../../../../libs/mpl/doc/refmanual/random-access-sequence.html">
601<code>MPL Random Access Sequence</code></a> and
602<a href="../../../../libs/mpl/doc/refmanual/extensible-sequence.html">
603<code>MPL Extensible Sequence</code></a> containing the types of the iterators of
604the indices held by the <code>multi_index_container</code>, in the same order as they were
605specified.
606</blockquote>
607
608<code>const_iterator_type_list</code>
609
610<blockquote>
611Model of
612<a href="../../../../libs/mpl/doc/refmanual/random-access-sequence.html">
613<code>MPL Random Access Sequence</code></a> and
614<a href="../../../../libs/mpl/doc/refmanual/extensible-sequence.html">
615<code>MPL Extensible Sequence</code></a> containing the types of the constant
616iterators of the indices held by the <code>multi_index_container</code>, in the same order
617as they were specified.
618</blockquote>
619
620<h4><a name="nested_templates">Nested class templates</a></h4>
621
622<code>template&lt;int N> struct nth_index</code>
623
624<blockquote>
625<code>nth_index&lt;N>::type</code> yields the type of the
626<code>N</code>-th (0-based) index held by the <code>multi_index_container</code>, in
627the same order as they were specified.<br>
628<b>Requires:</b> <code>0 &lt;= N &lt; I</code>.
629</blockquote>
630
631<code>template&lt;typename Tag> struct index</code>
632
633<blockquote>
634<code>index&lt;Tag>::type</code> yields the type of the index which
635has <code>Tag</code> as an associated <a href="indices.html#tags">tag type</a>.<br>
636<b>Requires:</b> Some index of the <code>multi_index_container</code> has <code>Tag</code>
637as an associated tag type.
638</blockquote>
639
640<code>template&lt;int N> struct nth_index_iterator</code>
641
642<blockquote>
643<code>nth_index_iterator&lt;N>::type</code> is equivalent to
644<code>nth_index&lt;N>::type::iterator</code>.<br>
645<b>Note:</b> The use of <code>nth_index_iterator</code> is deprecated.
646</blockquote>
647
648<code>template&lt;int N> struct nth_index_const_iterator</code>
649
650<blockquote>
651<code>nth_index_const_iterator&lt;N>::type</code> is equivalent to
652<code>nth_index&lt;N>::type::const_iterator</code>.<br>
653<b>Note:</b> The use of <code>nth_index_const_iterator</code> is deprecated.
654</blockquote>
655
656<code>template&lt;typename Tag> struct index_iterator</code>
657
658<blockquote>
659<code>index_iterator&lt;Tag>::type</code> is equivalent to
660<code>index&lt;Tag>::type::iterator</code>.<br>
661<b>Note:</b> The use of <code>index_iterator</code> is deprecated.
662</blockquote>
663
664<code>template&lt;typename Tag> struct index_const_iterator</code>
665
666<blockquote>
667<code>index_const_iterator&lt;Tag>::type</code> is equivalent to
668<code>index&lt;Tag>::type::const_iterator</code>.<br>
669<b>Note:</b> The use of <code>index_const_iterator</code> is deprecated.
670</blockquote>
671
672<h4><a name="constructors">Constructors, copy and assignment</a></h4>
673
674<code>explicit multi_index_container(<br>
675&nbsp;&nbsp;const ctor_args_list&amp; args_list=ctor_args_list(),<br>
676&nbsp;&nbsp;const allocator_type&amp; al=allocator_type());</code>
677
678<blockquote>
679<b>Effects:</b> Constructs an empty <code>multi_index_container</code> using the
680specified argument list and allocator.<br>
681<b>Complexity:</b> Constant.
682</blockquote>
683
684<code>explicit multi_index_container(const allocator_type&amp; al);</code>
685
686<blockquote>
687<b>Effects:</b> Constructs an empty <code>multi_index_container</code> using the
688specified allocator and the default value of <code>ctor_args_list</code>.<br>
689<b>Complexity:</b> Constant.
690</blockquote>
691
692<code>template&lt;typename InputIterator><br>
693multi_index_container(<br>
694&nbsp;&nbsp;InputIterator first,InputIterator last,<br>
695&nbsp;&nbsp;const ctor_args_list&amp; args_list=ctor_args_list(),<br>
696&nbsp;&nbsp;const allocator_type&amp; al=allocator_type());</code>
697
698<blockquote>
699<b>Requires:</b> <code>InputIterator</code> is an input iterator.
700<code>Value</code> is
701<code>EmplaceConstructible</code> into <code>multi_index_container</code>
702from <code>*first</code>.
703<code>last</code> is reachable from <code>first</code>.<br>
704<b>Effects:</b> Constructs and empty <code>multi_index_container</code> using the
705specified argument list and allocator and fills it with
706the elements in the range [<code>first</code>,<code>last</code>).
707Insertion of each element may or may not succeed depending
708on the acceptance by all the indices of the <code>multi_index_container</code>.<br>
709<b>Complexity:</b> <code>O(m*H(m))</code>, where <code>m</code> is
710the number of elements in [<code>first</code>,<code>last</code>).<br>
711</blockquote>
712
713<code>multi_index_container(<br>
714&nbsp;&nbsp;std::initializer_list&lt;Value&gt; list,<br>
715&nbsp;&nbsp;const ctor_args_list&amp; args_list=ctor_args_list(),<br>
716&nbsp;&nbsp;const allocator_type&amp; al=allocator_type());</code>
717
718<blockquote>
719<b>Effects:</b> Equivalent to
720<code>multi_index_container(list.begin(),list.end(),args_list,al)</code>.
721</blockquote>
722
723<code>multi_index_container(<br>
724&nbsp;&nbsp;const multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp; x);</code>
725
726<blockquote>
727<b>Requires:</b> <code>Value</code> is <code>CopyInsertable</code> into
728<code>multi_index_container</code>.<br>
729<b>Effects:</b> Constructs a copy of <code>x</code>, copying its
730elements as well as its internal objects (those specified
731in <code>ctor_args_list</code> and the allocator.)<br>
732<b>Postconditions:</b> <code>*this==x</code>. The order on every index
733of the <code>multi_index_container</code> is preserved as well.<br>
734<b>Complexity:</b> <code>O(x.size()*log(x.size()) + C(x.size()))</code>.
735</blockquote>
736
737<code>multi_index_container(<br>
738&nbsp;&nbsp;multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp;&amp; x);</code>
739
740<blockquote>
741<b>Effects:</b> Constructs a <code>multi_index_container</code> by moving the
742elements of <code>x</code> and copying its internal objects (those specified
743in <code>ctor_args_list</code> and the allocator.)<br>
744<b>Postconditions:</b> If <code>x==y</code> just
745before the movement, <code>*this==y</code>. The order on every index
746of the <code>multi_index_container</code> is preserved as well.<br>
747<b>Complexity:</b> Constant.
748</blockquote>
749
750<code>~multi_index_container()</code>
751<blockquote>
752<b>Effects:</b> Destroys the <code>multi_index_container</code> and all the elements
753contained. The order in which the elements are destroyed is not specified.<br>
754<b>Complexity:</b> <code>O(n)</code>.
755</blockquote>
756
757<code>multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp; operator=(<br>
758&nbsp;&nbsp;const multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp; x);</code>
759
760<blockquote>
761<b>Requires:</b> <code>Value</code> is <code>CopyInsertable</code> into
762<code>multi_index_container</code>.<br>
763<b>Effects:</b> Replaces the elements and internal objects of the <code>multi_index_container</code>
764with copies from <code>x</code>.<br>
765<b>Postconditions:</b> <code>*this==x</code>. The order on every index
766of the <code>multi_index_container</code> is preserved as well.<br>
767<b>Returns:</b> <code>*this</code>.<br>
768<b>Complexity:</b> <code>O(n + x.size()*log(x.size()) +
769C(x.size()))</code>.<br>
770<b>Exception safety:</b> Strong, provided the copy and assignment operations
771of the types of <code>ctor_args_list</code> do not throw.
772</blockquote>
773
774<code>multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp; operator=(<br>
775&nbsp;&nbsp;multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp;&amp; x);</code>
776
777<blockquote>
778<b>Effects:</b> Replaces the elements of <code>multi_index_container</code>
779with those of <code>x</code> and its internal objects with copies from the
780corresponding objects in <code>x</code>.<br>
781<b>Postconditions:</b> If <code>x==y</code> just
782before the movement, <code>*this==y</code>. The order on every index
783of the <code>multi_index_container</code> is preserved as well.<br>
784<b>Returns:</b> <code>*this</code>.<br>
785<b>Complexity:</b> <code>O(n)</code>.<br>
786<b>Exception safety:</b> Strong, provided the copy and assignment operations
787of the types of <code>ctor_args_list</code> do not throw.
788</blockquote>
789
790<code>multi_index_container&lt;Value,IndexSpecifierList,Allocator>&amp; operator=(<br>
791&nbsp;&nbsp;std::initializer_list&lt;Value&gt; list);</code>
792
793<blockquote>
794<b>Requires:</b> <code>Value</code> is <code>CopyInsertable</code> into
795<code>multi_index_container</code>.<br>
796<b>Effects:</b> Replaces the elements the <code>multi_index_container</code>
797with copies of the elements of <code>list</code>, inserted in the specified order.
798Insertion of each element may or may not succeed depending
799on the acceptance by all the indices of the <code>multi_index_container</code>.<br>
800<b>Returns:</b> <code>*this</code>.<br>
801<b>Complexity:</b> <code>O(n + I(m))</code>, where <code>m</code> is the
802number of elements of <code>list</code>.<br>
803<b>Exception safety:</b> Strong, provided the copy and assignment operations
804of the types of <code>ctor_args_list</code> do not throw.
805</blockquote>
806
807<code>allocator_type get_allocator()const noexcept;</code>
808
809<blockquote>
810Returns a copy of the <code>allocator_type</code> object used to construct
811the <code>multi_index_container</code>.<br>
812<b>Complexity:</b> Constant.
813</blockquote>
814
815<h4><a name="index_retrieval">Index retrieval operations</a></h4>
816
817<code>template&lt;int N> typename nth_index&lt;N>::type&amp; get()noexcept;</code>
818
819<blockquote>
820<b>Requires:</b> <code>0 &lt;= N &lt; I</code>.<br>
821<b>Effects:</b> Returns a reference to the
822<code>nth_index&lt;N>::type</code> index held by <code>*this</code>.<br>
823<b>Complexity:</b> Constant.<br>
824</blockquote>
825
826<code>template&lt;int N> const typename nth_index&lt;N>::type&amp; get()const noexcept;</code>
827
828<blockquote>
829<b>Requires:</b> <code>0 &lt;= N &lt; I</code>.<br>
830<b>Effects:</b> Returns a <code>const</code> reference to the
831<code>nth_index&lt;N>::type</code> index held by <code>*this</code>.<br>
832<b>Complexity:</b> Constant.<br>
833</blockquote>
834
835<code>template&lt;typename Tag> typename index&lt;Tag>::type&amp; get()noexcept;</code>
836
837<blockquote>
838<b>Requires:</b> <code>Tag</code> is such that <code>index&lt;Tag>::type</code>
839is valid.<br>
840<b>Effects:</b> Returns a reference to the
841<code>index&lt;Tag>::type</code> index held by
842<code>*this</code>.<br>
843<b>Complexity:</b> Constant.<br>
844</blockquote>
845
846<code>template&lt;typename Tag> const typename index&lt;Tag>::type&amp; get()const noexcept;</code>
847
848<blockquote>
849<b>Requires:</b> <code>Tag</code> is such that <code>index&lt;Tag>::type</code>
850is valid.<br>
851<b>Effects:</b> Returns a <code>const</code> reference to the
852<code>index&lt;Tag>::type</code> index held by
853<code>*this</code>.<br>
854<b>Complexity:</b> Constant.<br>
855</blockquote>
856
857<h4><a name="projection">Projection operations</a></h4>
858
859<p>
860Given a <code>multi_index_container</code> with indices <code>i1</code>
861and <code>i2</code>, we say than an <code>i1</code>-iterator
862<code>it1</code> and an <code>i2</code>-iterator <code>it2</code>
863are <i>equivalent</i> if:
864<ul>
865 <li> <code>it1==i1.end()</code> AND <code>it2==i2.end()</code>,</li>
866 <li> OR <code>it1</code> and <code>it2</code> point to the
867 same element.</li>
868</ul>
869</p>
870
871<code>template&lt;int N,typename IteratorType><br>
872typename nth_index&lt;N>::type::iterator project(IteratorType it);</code>
873
874<blockquote>
875<b>Requires:</b> <code>0 &lt;= N &lt; I</code>. <code>IteratorType</code>
876belongs to <code>iterator_type_list</code>. <code>it</code> is a valid
877iterator of some index of <code>*this</code> (i.e. does not refer to some
878other <code>multi_index_container</code>.)<br>
879<b>Effects:</b> Returns an <code>nth_index&lt;N>::type::iterator</code>
880equivalent to <code>it</code>.<br>
881<b>Complexity:</b> Constant.<br>
882<b>Exception safety:</b> <code>nothrow</code>.
883</blockquote>
884
885<code>template&lt;int N,typename IteratorType><br>
886typename nth_index&lt;N>::type::const_iterator project(IteratorType it)const;</code>
887
888<blockquote>
889<b>Requires:</b> <code>0 &lt;= N &lt; I</code>. <code>IteratorType</code>
890belongs to <code>const_iterator_type_list</code> or
891<code>iterator_type_list</code>. <code>it</code> is a
892valid (constant or non-constant) iterator of some index of <code>*this</code>
893(i.e. does not refer to some other <code>multi_index_container</code>.)<br>
894<b>Effects:</b> Returns an <code>nth_index&lt;N>::type::const_iterator</code>
895equivalent to <code>it</code>.<br>
896<b>Complexity:</b> Constant.<br>
897<b>Exception safety:</b> <code>nothrow</code>.
898</blockquote>
899
900<code>template&lt;typename Tag,typename IteratorType><br>
901typename index&lt;Tag>::type::iterator project(IteratorType it);</code>
902
903<blockquote>
904<b>Requires:</b> <code>Tag</code> is such that
905<code>index&lt;Tag>::type</code> is valid. <code>IteratorType</code>
906belongs to <code>iterator_type_list</code>. <code>it</code> is a valid
907iterator of some index of <code>*this</code> (i.e. does not refer to some
908other <code>multi_index_container</code>.)<br>
909<b>Effects:</b> Returns an <code>index&lt;Tag>::type::iterator</code>
910equivalent to <code>it</code>.<br>
911<b>Complexity:</b> Constant.<br>
912<b>Exception safety:</b> <code>nothrow</code>.
913</blockquote>
914
915<code>template&lt;typename Tag,typename IteratorType><br>
916typename index&lt;Tag>::type::const_iterator project(IteratorType it)const;</code>
917
918<blockquote>
919<b>Requires:</b> <code>Tag</code> is such that
920<code>index&lt;Tag>::type</code> is valid. <code>IteratorType</code>
921belongs to <code>const_iterator_type_list</code> or
922<code>iterator_type_list</code>. <code>it</code> is a valid
923(constant or non-constant) iterator of some index of <code>*this</code>
924(i.e. does not refer to some other <code>multi_index_container</code>.)<br>
925<b>Effects:</b> Returns an <code>index&lt;Tag>::type::const_iterator</code>
926iterator equivalent to <code>it</code>.<br>
927<b>Complexity:</b> Constant.<br>
928<b>Exception safety:</b> <code>nothrow</code>.
929</blockquote>
930
931<h4><a name="serialization">Serialization</a></h4>
932
933<p>
934<code>multi_index_container</code>s can be archived/retrieved by means of
935<a href="../../../serialization/index.html">Boost.Serialization</a>.
936Boost.MultiIndex does not expose a public serialization interface, as this
937is provided by Boost.Serialization itself. Both regular and XML
938archives are supported.
939</p>
940
941<p>
942Each of the indices comprising a given <code>multi_index_container</code> contributes
943its own preconditions as well as guarantees on the retrieved containers. In describing
944these, the following concepts are used. A type <code>T</code> is <i>serializable</i>
945(resp. XML-serializable) if any object of type <code>T</code> can be saved to an output
946archive (XML archive) and later retrieved from an input archive (XML archive) associated to
947the same storage. If <code>x'</code> of type <code>T</code> is loaded from the
948serialization information saved from another object <code>x</code>, we say that
949<code>x'</code> is a <i>restored copy</i> of <code>x</code>. Given a binary predicate
950<code>Pred</code> over (<code>T</code>, <code>T</code>), and objects <code>p</code>
951and <code>q</code> of type <code>Pred</code>, we say that <code>q</code>
952is <i>serialization-compatible</i> with <code>p</code> if
953<blockquote>
954<code>p(x,y) == q(x',y')</code>
955</blockquote>
956for every <code>x</code> and <code>y</code> of type <code>T</code> and <code>x'</code> and
957<code>y'</code> being restored copies of <code>x</code> and <code>y</code>,
958respectively.
959</p>
960
961Operation: saving of a <code>multi_index_container</code> <code>m</code> to an
962output archive (XML archive) <code>ar</code>.
963
964<blockquote>
965<b>Requires:</b> <code>Value</code> is serializable (XML-serializable). Additionally,
966each of the indices of <code>m</code> can impose another requirements.<br>
967<b>Exception safety:</b> Strong with respect to <code>m</code>. If an exception
968is thrown, <code>ar</code> may be left in an inconsistent state.
969</blockquote>
970
971Operation: loading of a <code>multi_index_container</code> <code>m'</code> from an
972input archive (XML archive) <code>ar</code>.
973
974<blockquote>
975<b>Requires:</b> <code>Value</code> is serializable (XML-serializable). Additionally,
976each of the indices of <code>m'</code> can impose another requirements.<br>
977<b>Exception safety:</b> Basic. If an exception is thrown, <code>ar</code> may be
978left in an inconsistent state.
979</blockquote>
980
981<hr>
982
983<div class="prev_link"><a href="index.html"><img src="../prev.gif" alt="Boost.MultiIndex reference" border="0"><br>
984Boost.MultiIndex reference
985</a></div>
986<div class="up_link"><a href="index.html"><img src="../up.gif" alt="Boost.MultiIndex reference" border="0"><br>
987Boost.MultiIndex reference
988</a></div>
989<div class="next_link"><a href="indices.html"><img src="../next.gif" alt="index reference" border="0"><br>
990Index reference
991</a></div><br clear="all" style="clear: all;">
992
993<br>
994
995<p>Revised October 12th 2013</p>
996
997<p>&copy; Copyright 2003-2013 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
998Distributed under the Boost Software
999License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
1000LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
1001http://www.boost.org/LICENSE_1_0.txt</a>)
1002</p>
1003
1004</body>
1005</html>