-
Notifications
You must be signed in to change notification settings - Fork 0
/
btree__multiset_8hpp_source.html
237 lines (235 loc) · 157 KB
/
btree__multiset_8hpp_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>tlx: tlx/container/btree_multiset.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">tlx
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('btree__multiset_8hpp_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">btree_multiset.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="btree__multiset_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*******************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * tlx/container/btree_multiset.hpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Part of tlx - http://panthema.net/tlx</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright (C) 2008-2017 Timo Bingmann <[email protected]></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * All rights reserved. Published under the Boost Software License, Version 1.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#ifndef TLX_CONTAINER_BTREE_MULTISET_HEADER</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#define TLX_CONTAINER_BTREE_MULTISET_HEADER</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <utility></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="btree_8hpp.html">tlx/container/btree.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">namespace </span><a class="code" href="namespacetlx.html">tlx</a> {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//! \addtogroup tlx_container_btree</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//! \{</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">/*!</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Specialized B+ tree template class implementing STL's multiset container.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Implements the STL multiset using a B+ tree. It can be used as a drop-in</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * replacement for std::multiset. Not all asymptotic time requirements are met</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * in theory. The class has a traits class defining B+ tree properties like</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * slots and self-verification. Furthermore an allocator can be specified for</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * tree nodes.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * It is somewhat inefficient to implement a multiset using a B+ tree, a plain B</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * tree would hold fewer copies of the keys.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> */</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Key_,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">typename</span> Compare_ = std::less<Key_>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">typename</span> Traits_ = btree_default_traits<Key_, Key_>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">typename</span> Alloc_ = std::allocator<Key_> ></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> //! \name Template Parameter Types</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> //! First template parameter: The key type of the btree. This is stored in</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> //! inner nodes and leaves.</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#acb65c421faf5d749d03882f64d184775"> 49</a></span> <span class="comment"></span> <span class="keyword">typedef</span> Key_ <a class="code" href="classtlx_1_1btree__multiset.html#acb65c421faf5d749d03882f64d184775">key_type</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> //! Second template parameter: Key comparison function object</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a7462b1e2b24182127f494d58dbb95fa9"> 52</a></span> <span class="comment"></span> <span class="keyword">typedef</span> Compare_ <a class="code" href="classtlx_1_1btree__multiset.html#a7462b1e2b24182127f494d58dbb95fa9">key_compare</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"> //! Third template parameter: Traits object used to define more parameters</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"> //! of the B+ tree</span></div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#add985b33b72ef68812f3986e8df807f5"> 56</a></span> <span class="comment"></span> <span class="keyword">typedef</span> Traits_ <a class="code" href="classtlx_1_1btree__multiset.html#add985b33b72ef68812f3986e8df807f5">traits</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"> //! Fourth template parameter: STL allocator</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160"> 59</a></span> <span class="comment"></span> <span class="keyword">typedef</span> Alloc_ <a class="code" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">allocator_type</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment"></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// The macro TLX_BTREE_FRIENDS can be used by outside class to access the B+</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// tree internals. This was added for wxBTreeDemo to be able to draw the</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// tree.</span></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a38ffbf220e298d1ee8c79307009cfa00"> 66</a></span>  <a class="code" href="classtlx_1_1btree__multiset.html#a38ffbf220e298d1ee8c79307009cfa00">TLX_BTREE_FRIENDS</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> //! \name Constructed Types</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> //! Construct the set value_type: the key_type.</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a35dc4a1129cbbce38e6b5cf83876518f"> 73</a></span> <span class="comment"></span> <span class="keyword">typedef</span> key_type <a class="code" href="classtlx_1_1btree__multiset.html#a35dc4a1129cbbce38e6b5cf83876518f">value_type</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"> //! Typedef of our own type</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a39b2ac0d85de6ff743400a274fd85692"> 76</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset<key_type, key_compare, traits, allocator_type></a> <span class="keyword">self</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> //! Key Extractor Struct</span></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structtlx_1_1btree__multiset_1_1key__of__value.html"> 79</a></span> <span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structtlx_1_1btree__multiset_1_1key__of__value.html">key_of_value</a> {<span class="comment"></span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> //! pull first out of pair</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structtlx_1_1btree__multiset_1_1key__of__value.html#a2f06b332dc03ff5e9e52f85ac3794a95"> 81</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> key_type& <span class="keyword">get</span>(<span class="keyword">const</span> value_type& v) { <span class="keywordflow">return</span> v; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  };</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> //! Implementation type of the btree_base</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classtlx_1_1BTree.html">BTree</a><<a class="code" href="classtlx_1_1btree__multiset.html#acb65c421faf5d749d03882f64d184775">key_type</a>, <a class="code" href="classtlx_1_1btree__multiset.html#a35dc4a1129cbbce38e6b5cf83876518f">value_type</a>, <a class="code" href="structtlx_1_1btree__multiset_1_1key__of__value.html">key_of_value</a>, <a class="code" href="classtlx_1_1btree__multiset.html#a7462b1e2b24182127f494d58dbb95fa9">key_compare</a>,</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a00bce22abcfcd08fde238bf6dd349670"> 86</a></span>  <a class="code" href="classtlx_1_1btree__multiset.html#add985b33b72ef68812f3986e8df807f5">traits</a>, <span class="keyword">true</span>, allocator_type> <a class="code" href="classtlx_1_1btree__multiset.html#a00bce22abcfcd08fde238bf6dd349670">btree_impl</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment"></span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"> //! Function class comparing two value_type keys.</span></div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a63fd0e61d25808851c78559d09297686"> 89</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::value_compare <a class="code" href="classtlx_1_1btree__multiset.html#a63fd0e61d25808851c78559d09297686">value_compare</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"></span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> //! Size type used to count keys</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a1be1cfb6ae3135c01d8e8d8fcfbe0ee8"> 92</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classtlx_1_1BTree.html#a49b489a408a211a90e766329c0732d7b">btree_impl::size_type</a> <a class="code" href="classtlx_1_1btree__multiset.html#a1be1cfb6ae3135c01d8e8d8fcfbe0ee8">size_type</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"></span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> //! Small structure containing statistics about the tree</span></div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a77ce4303907bb816a959ac7b0725311e"> 95</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::tree_stats <a class="code" href="classtlx_1_1btree__multiset.html#a77ce4303907bb816a959ac7b0725311e">tree_stats</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"></span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"></span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> //! \name Static Constant Options and Values of the B+ Tree</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> //! Base B+ tree parameter: The number of key/data slots in each leaf</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a52e57d8d7e32f6d5a56227a8d1f899cf"> 104</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classtlx_1_1btree__multiset.html#a52e57d8d7e32f6d5a56227a8d1f899cf">leaf_slotmax</a> = <a class="code" href="classtlx_1_1BTree.html#a52e57d8d7e32f6d5a56227a8d1f899cf">btree_impl::leaf_slotmax</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment"></span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment"> //! Base B+ tree parameter: The number of key slots in each inner node,</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> //! this can differ from slots in each leaf.</span></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a004e76f14b7697d3801e3b1d397da5a5"> 108</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classtlx_1_1btree__multiset.html#a004e76f14b7697d3801e3b1d397da5a5">inner_slotmax</a> = <a class="code" href="classtlx_1_1BTree.html#a004e76f14b7697d3801e3b1d397da5a5">btree_impl::inner_slotmax</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"></span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment"> //! Computed B+ tree parameter: The minimum number of key slots used in a</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment"> //! leaf. If fewer slots are used, the leaf will be merged or slots shifted</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> //! from it's siblings.</span></div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#abbec00fa1cdcfbf6b78482915c644dba"> 113</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classtlx_1_1btree__multiset.html#abbec00fa1cdcfbf6b78482915c644dba">leaf_slotmin</a> = <a class="code" href="classtlx_1_1BTree.html#abbec00fa1cdcfbf6b78482915c644dba">btree_impl::leaf_slotmin</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"></span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> //! Computed B+ tree parameter: The minimum number of key slots used</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment"> //! in an inner node. If fewer slots are used, the inner node will be</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> //! merged or slots shifted from it's siblings.</span></div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a416b2e639a4ec04429632c3ee85e747c"> 118</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classtlx_1_1btree__multiset.html#a416b2e639a4ec04429632c3ee85e747c">inner_slotmin</a> = <a class="code" href="classtlx_1_1BTree.html#a416b2e639a4ec04429632c3ee85e747c">btree_impl::inner_slotmin</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> //! Debug parameter: Enables expensive and thorough checking of the B+ tree</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> //! invariants after each insert/erase operation.</span></div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a81a632bc519f850f4af56567ba404f4e"> 122</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a81a632bc519f850f4af56567ba404f4e">self_verify</a> = <a class="code" href="classtlx_1_1BTree.html#a81a632bc519f850f4af56567ba404f4e">btree_impl::self_verify</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"></span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> //! Debug parameter: Prints out lots of debug information about how the</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> //! algorithms change the tree. Requires the header file to be compiled with</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> //! TLX_BTREE_DEBUG and the key type must be std::ostream printable.</span></div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a6295d47efda04de55c38cb8ea1cdb807"> 127</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a6295d47efda04de55c38cb8ea1cdb807">debug</a> = <a class="code" href="classtlx_1_1BTree.html#a6295d47efda04de55c38cb8ea1cdb807">btree_impl::debug</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"></span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment"> //! Operational parameter: Allow duplicate keys in the btree.</span></div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a4a380c8745ff0a1c814742821e85403e"> 130</a></span> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a4a380c8745ff0a1c814742821e85403e">allow_duplicates</a> = <a class="code" href="classtlx_1_1BTree.html#a4a380c8745ff0a1c814742821e85403e">btree_impl::allow_duplicates</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment"></span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment"></span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment"> //! \name Iterators and Reverse Iterators</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment"> //! STL-like iterator object for B+ tree items. The iterator points to a</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment"> //! specific slot number in a leaf.</span></div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#afac99371679d954e37aefa29118a6459"> 140</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::iterator <a class="code" href="classtlx_1_1btree__multiset.html#afac99371679d954e37aefa29118a6459">iterator</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment"></span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment"> //! STL-like iterator object for B+ tree items. The iterator points to a</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment"> //! specific slot number in a leaf.</span></div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#afcd3bad1ced519acc3641a8f83596d37"> 144</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#afcd3bad1ced519acc3641a8f83596d37">const_iterator</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment"></span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment"> //! create mutable reverse iterator by using STL magic</span></div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a080458f85e4aefc31cc89767613243df"> 147</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a080458f85e4aefc31cc89767613243df">reverse_iterator</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"></span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> //! create constant reverse iterator by using STL magic</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a4e16fc20a38234d65573c5e4eac083e4"> 150</a></span> <span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> btree_impl::const_reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a4e16fc20a38234d65573c5e4eac083e4">const_reverse_iterator</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"></span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"></span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"> //! \name Tree Implementation Object</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment"> //! The contained implementation object</span></div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3"> 159</a></span> <span class="comment"></span> btree_impl <a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment"></span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment"></span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment"> //! \name Constructors and Destructor</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment"> //! Default constructor initializing an empty B+ tree with the standard key</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment"> //! comparison function</span></div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a656898a6ce97897f57f392a739fcaa78"> 169</a></span> <span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classtlx_1_1btree__multiset.html#a656898a6ce97897f57f392a739fcaa78">btree_multiset</a>(<span class="keyword">const</span> allocator_type& alloc = <a class="code" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">allocator_type</a>())</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  : tree_(alloc)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  { }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment"></span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment"> //! Constructor initializing an empty B+ tree with a special key</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment"> //! comparison object</span></div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a23345bcc88140b212df6acbe628039b9"> 175</a></span> <span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classtlx_1_1btree__multiset.html#a23345bcc88140b212df6acbe628039b9">btree_multiset</a>(<span class="keyword">const</span> key_compare& kcf,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">const</span> allocator_type& alloc = <a class="code" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">allocator_type</a>())</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  : tree_(kcf, alloc)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  { }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment"></span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment"> //! Constructor initializing a B+ tree with the range [first,last)</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator></div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a009237af9bb96dbedc5a72578122a336"> 182</a></span>  <a class="code" href="classtlx_1_1btree__multiset.html#a009237af9bb96dbedc5a72578122a336">btree_multiset</a>(InputIterator first, InputIterator last,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> allocator_type& alloc = <a class="code" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">allocator_type</a>())</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  : tree_(alloc) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696">insert</a>(first, last);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment"></span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"> //! Constructor initializing a B+ tree with the range [first,last) and a</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment"> //! special key comparison object</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">class</span> InputIterator></div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#af9e5dc32ba2b4cf9cf29e3a3314bbf59"> 191</a></span>  <a class="code" href="classtlx_1_1btree__multiset.html#af9e5dc32ba2b4cf9cf29e3a3314bbf59">btree_multiset</a>(InputIterator first, InputIterator last,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">const</span> key_compare& kcf,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> allocator_type& alloc = <a class="code" href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">allocator_type</a>())</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  : tree_(kcf, alloc) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696">insert</a>(first, last);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment"></span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment"> //! Frees up all used B+ tree memory pages</span></div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a4040aecad09bb71686d455eb8643fde3"> 199</a></span> <span class="comment"></span> <a class="code" href="classtlx_1_1btree__multiset.html#a4040aecad09bb71686d455eb8643fde3">~btree_multiset</a>()</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  { }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment"></span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"> //! Fast swapping of two identical B+ tree objects.</span></div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a87b585ae5718fad4c054b5a41d7972d3"> 203</a></span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#a87b585ae5718fad4c054b5a41d7972d3">swap</a>(<a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& from) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespacetlx.html#ade1320658af9846df1831480a96e7a38">std::swap</a>(tree_, from.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment"></span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment"></span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment"> //! \name Key and Value Comparison Function Objects</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment"> //! Constant access to the key comparison object sorting the B+ tree</span></div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a62c2add0ee33d7acce9f02077cd1da99"> 214</a></span> <span class="comment"></span> key_compare <a class="code" href="classtlx_1_1btree__multiset.html#a62c2add0ee33d7acce9f02077cd1da99">key_comp</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a62c2add0ee33d7acce9f02077cd1da99">key_comp</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment"></span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment"> //! Constant access to a constructed value_type comparison object. Required</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment"> //! by the STL</span></div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ab42ea149fdde84e56ff0a7ed11e13aa8"> 220</a></span> <span class="comment"></span> value_compare <a class="code" href="classtlx_1_1btree__multiset.html#ab42ea149fdde84e56ff0a7ed11e13aa8">value_comp</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ab42ea149fdde84e56ff0a7ed11e13aa8">value_comp</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment"></span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment"></span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment"> //! \name Allocators</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment"> //! Return the base node allocator provided during construction.</span></div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#acfbc5374e81f060b1cdffeb9c494ae86"> 231</a></span> <span class="comment"></span> allocator_type <a class="code" href="classtlx_1_1btree__multiset.html#acfbc5374e81f060b1cdffeb9c494ae86">get_allocator</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#acfbc5374e81f060b1cdffeb9c494ae86">get_allocator</a>();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment"></span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment"></span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"> //! \name Fast Destruction of the B+ Tree</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment"> //! Frees all keys and all nodes of the tree</span></div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ac8bb3912a3ce86b15842e79d0b421204"> 242</a></span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>() {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  tree_.<a class="code" href="classtlx_1_1BTree.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="comment"></span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="comment"></span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment"> //! \name STL Iterator Construction Functions</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="comment"> //! Constructs a read/data-write iterator that points to the first slot in</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="comment"> //! the first leaf of the B+ tree.</span></div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ad69bd11391be1a1dba5c8202259664f8"> 254</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#ad69bd11391be1a1dba5c8202259664f8">begin</a>() {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ad69bd11391be1a1dba5c8202259664f8">begin</a>();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="comment"></span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="comment"> //! Constructs a read/data-write iterator that points to the first invalid</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="comment"> //! slot in the last leaf of the B+ tree.</span></div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#acad38d52497a975bfb6f2f6acd76631f"> 260</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#acad38d52497a975bfb6f2f6acd76631f">end</a>() {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#acad38d52497a975bfb6f2f6acd76631f">end</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="comment"></span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="comment"> //! Constructs a read-only constant iterator that points to the first slot</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="comment"> //! in the first leaf of the B+ tree.</span></div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#aa4b02d4f1a8500fb07a551069060709f"> 266</a></span> <span class="comment"></span> const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#aa4b02d4f1a8500fb07a551069060709f">begin</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ad69bd11391be1a1dba5c8202259664f8">begin</a>();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="comment"></span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment"> //! Constructs a read-only constant iterator that points to the first</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="comment"> //! invalid slot in the last leaf of the B+ tree.</span></div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a350132543d80a1c1e5be844e6d2878ea"> 272</a></span> <span class="comment"></span> const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a350132543d80a1c1e5be844e6d2878ea">end</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#acad38d52497a975bfb6f2f6acd76631f">end</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="comment"></span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="comment"> //! Constructs a read/data-write reverse iterator that points to the first</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="comment"> //! invalid slot in the last leaf of the B+ tree. Uses STL magic.</span></div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#acea44ed500a54b2bb93e16b86e81afa8"> 278</a></span> <span class="comment"></span> reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#acea44ed500a54b2bb93e16b86e81afa8">rbegin</a>() {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#acea44ed500a54b2bb93e16b86e81afa8">rbegin</a>();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment"></span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment"> //! Constructs a read/data-write reverse iterator that points to the first</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="comment"> //! slot in the first leaf of the B+ tree. Uses STL magic.</span></div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a68c599ddcbfddc65170de524ac165e44"> 284</a></span> <span class="comment"></span> reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a68c599ddcbfddc65170de524ac165e44">rend</a>() {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a68c599ddcbfddc65170de524ac165e44">rend</a>();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment"></span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="comment"> //! Constructs a read-only reverse iterator that points to the first</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="comment"> //! invalid slot in the last leaf of the B+ tree. Uses STL magic.</span></div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a04886aa70c34d66738e78bf70c675e66"> 290</a></span> <span class="comment"></span> const_reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a04886aa70c34d66738e78bf70c675e66">rbegin</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#acea44ed500a54b2bb93e16b86e81afa8">rbegin</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment"></span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment"> //! Constructs a read-only reverse iterator that points to the first slot</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment"> //! in the first leaf of the B+ tree. Uses STL magic.</span></div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ab3c414470d5cea2986cfab7a90146cb6"> 296</a></span> <span class="comment"></span> const_reverse_iterator <a class="code" href="classtlx_1_1btree__multiset.html#ab3c414470d5cea2986cfab7a90146cb6">rend</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a68c599ddcbfddc65170de524ac165e44">rend</a>();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"></span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"></span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment"> //! \name Access Functions to the Item Count</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="comment"> //! Return the number of keys in the B+ tree</span></div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a503ab01f6c0142145d3434f6924714e7"> 307</a></span> <span class="comment"></span> size_type <a class="code" href="classtlx_1_1btree__multiset.html#a503ab01f6c0142145d3434f6924714e7">size</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a503ab01f6c0142145d3434f6924714e7">size</a>();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="comment"></span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="comment"> //! Returns true if there is at least one key in the B+ tree</span></div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ac6e61de369e994009e36f344f99c15ad"> 312</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#ac6e61de369e994009e36f344f99c15ad">empty</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ac6e61de369e994009e36f344f99c15ad">empty</a>();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="comment"></span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="comment"> //! Returns the largest possible size of the B+ Tree. This is just a</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment"> //! function required by the STL standard, the B+ Tree can hold more items.</span></div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a0ab5ce862c0331d9e45a6e1774fca131"> 318</a></span> <span class="comment"></span> size_type <a class="code" href="classtlx_1_1btree__multiset.html#a0ab5ce862c0331d9e45a6e1774fca131">max_size</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a0ab5ce862c0331d9e45a6e1774fca131">max_size</a>();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="comment"></span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="comment"> //! Return a const reference to the current statistics.</span></div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a8b8497e30f5382f04b66ed4204019b30"> 323</a></span> <span class="comment"></span> <span class="keyword">const</span> tree_stats& <a class="code" href="classtlx_1_1btree__multiset.html#a8b8497e30f5382f04b66ed4204019b30">get_stats</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a3b5e61b63a8f02f388e295a287aab316">get_stats</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="comment"></span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="comment"></span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="comment"> //! \name STL Access Functions Querying the Tree by Descending to a Leaf</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="comment"> //! Non-STL function checking whether a key is in the B+ tree. The same as</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="comment"> //! (find(k) != end()) or (count() != 0).</span></div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a0d3d86d13f26293e1ddcff5569ad1ccb"> 335</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a0d3d86d13f26293e1ddcff5569ad1ccb">exists</a>(<span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a0d3d86d13f26293e1ddcff5569ad1ccb">exists</a>(key);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment"></span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment"> //! Tries to locate a key in the B+ tree and returns an iterator to the key</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="comment"> //! slot if found. If unsuccessful it returns end().</span></div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a9c9766a96c492f3e9e5861d6b4f87387"> 341</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#a9c9766a96c492f3e9e5861d6b4f87387">find</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a9c9766a96c492f3e9e5861d6b4f87387">find</a>(key);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"></span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"> //! Tries to locate a key in the B+ tree and returns an constant iterator to</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> //! the key slot if found. If unsuccessful it returns end().</span></div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#adc204502ef1606c9daa4a613da6aacfb"> 347</a></span> <span class="comment"></span> const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#adc204502ef1606c9daa4a613da6aacfb">find</a>(<span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a9c9766a96c492f3e9e5861d6b4f87387">find</a>(key);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment"></span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment"> //! Tries to locate a key in the B+ tree and returns the number of identical</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="comment"> //! key entries found.</span></div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#addd4e2b6ff9c7bef508bc908caabb2d4"> 353</a></span> <span class="comment"></span> size_type <a class="code" href="classtlx_1_1btree__multiset.html#addd4e2b6ff9c7bef508bc908caabb2d4">count</a>(<span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#addd4e2b6ff9c7bef508bc908caabb2d4">count</a>(key);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment"></span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment"> //! Searches the B+ tree and returns an iterator to the first pair equal to</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="comment"> //! or greater than key, or end() if all keys are smaller.</span></div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a373c61cca9b31735f4548b5b59b70184"> 359</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#a373c61cca9b31735f4548b5b59b70184">lower_bound</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a373c61cca9b31735f4548b5b59b70184">lower_bound</a>(key);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="comment"></span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="comment"> //! Searches the B+ tree and returns a constant iterator to the first pair</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="comment"> //! equal to or greater than key, or end() if all keys are smaller.</span></div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a31fbffbdf311ce68ec99f0aebab5c0ea"> 365</a></span> <span class="comment"></span> const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a31fbffbdf311ce68ec99f0aebab5c0ea">lower_bound</a>(<span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a373c61cca9b31735f4548b5b59b70184">lower_bound</a>(key);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="comment"></span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="comment"> //! Searches the B+ tree and returns an iterator to the first pair greater</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="comment"> //! than key, or end() if all keys are smaller or equal.</span></div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a482b50e623a123f653e2a91f113a507b"> 371</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#a482b50e623a123f653e2a91f113a507b">upper_bound</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a482b50e623a123f653e2a91f113a507b">upper_bound</a>(key);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="comment"></span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="comment"> //! Searches the B+ tree and returns a constant iterator to the first pair</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="comment"> //! greater than key, or end() if all keys are smaller or equal.</span></div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a99609d25589437b30cb42dab922bfaa9"> 377</a></span> <span class="comment"></span> const_iterator <a class="code" href="classtlx_1_1btree__multiset.html#a99609d25589437b30cb42dab922bfaa9">upper_bound</a>(<span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a482b50e623a123f653e2a91f113a507b">upper_bound</a>(key);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment"></span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="comment"> //! Searches the B+ tree and returns both lower_bound() and upper_bound().</span></div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a97bb054bc81e97ec55f0b539cdcbfcde"> 382</a></span> <span class="comment"></span> std::pair<iterator, iterator> <a class="code" href="classtlx_1_1btree__multiset.html#a97bb054bc81e97ec55f0b539cdcbfcde">equal_range</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a97bb054bc81e97ec55f0b539cdcbfcde">equal_range</a>(key);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="comment"></span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="comment"> //! Searches the B+ tree and returns both lower_bound() and upper_bound().</span></div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a33c1ee0eb39360edec2a985301b9d631"> 387</a></span> <span class="comment"></span> std::pair<const_iterator, const_iterator> <a class="code" href="classtlx_1_1btree__multiset.html#a33c1ee0eb39360edec2a985301b9d631">equal_range</a>(</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">const</span> key_type& key)<span class="keyword"> const </span>{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a97bb054bc81e97ec55f0b539cdcbfcde">equal_range</a>(key);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="comment"></span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="comment"></span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="comment"> //! \name B+ Tree Object Comparison Functions</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment"> //! Equality relation of B+ trees of the same type. B+ trees of the same</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment"> //! size and equal key (counts) are considered equal.</span></div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#af9c5afbc716b391b097f61eac2e7d146"> 400</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#af9c5afbc716b391b097f61eac2e7d146">operator == </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> (tree_ == other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="comment"></span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="comment"> //! Inequality relation. Based on operator==.</span></div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a15f605ad9ba8d26f0d0f314e21452a36"> 405</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a15f605ad9ba8d26f0d0f314e21452a36">operator != </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> (tree_ != other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="comment"></span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="comment"> //! Total ordering relation of B+ trees of the same type. It uses</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="comment"> //! std::lexicographical_compare() for the actual comparison of elements.</span></div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#aac281c225573faca4f1ccca1088fc91f"> 411</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#aac281c225573faca4f1ccca1088fc91f">operator < </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> (tree_ < other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="comment"></span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="comment"> //! Greater relation. Based on operator<.</span></div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ac1955b9b95ee812807d45be2475b3dd4"> 416</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#ac1955b9b95ee812807d45be2475b3dd4">operator > </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> (tree_ > other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment"></span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment"> //! Less-equal relation. Based on operator<.</span></div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ac96cbe05b93e7c067ddbe1a6020d4f2b"> 421</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#ac96cbe05b93e7c067ddbe1a6020d4f2b">operator <= </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> (tree_ <= other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="comment"></span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment"> //! Greater-equal relation. Based on operator<.</span></div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a7bc47c4f803502b8dd327f754f139d82"> 426</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a7bc47c4f803502b8dd327f754f139d82">operator >= </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)<span class="keyword"> const </span>{</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> (tree_ >= other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="comment"></span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment"></span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment"> //! \name Fast Copy: Assign Operator and Copy Constructors</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="comment"> //! Assignment operator. All the keys are copied</span></div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a9fd083659d2c145e58b6589cca5ed5e1"> 437</a></span> <span class="comment"></span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& <a class="code" href="classtlx_1_1btree__multiset.html#a9fd083659d2c145e58b6589cca5ed5e1">operator = </a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span> (<span class="keyword">this</span> != &other)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  tree_ = other.<a class="code" href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tree_</a>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment"></span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment"> //! Copy constructor. The newly initialized B+ tree object will contain a</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment"> //! copy of all keys.</span></div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a91e0e10e972a10087c0a999e958c8675"> 445</a></span> <span class="comment"></span> <a class="code" href="classtlx_1_1btree__multiset.html#a91e0e10e972a10087c0a999e958c8675">btree_multiset</a>(<span class="keyword">const</span> <a class="code" href="classtlx_1_1btree__multiset.html">btree_multiset</a>& other)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  : tree_(other.tree_)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  { }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="comment"></span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment"></span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="comment"> //! \name Public Insertion Functions</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="comment"> //! Attempt to insert a key into the B+ tree. As this set allows duplicates,</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="comment"> //! this function never fails.</span></div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696"> 457</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696">insert</a>(<span class="keyword">const</span> key_type& x) {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#aa218c2c89397f8d0484ef9438d540456">insert</a>(x).first;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="comment"></span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment"> //! Attempt to insert a key into the B+ tree. The iterator hint is currently</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment"> //! ignored by the B+ tree insertion routine.</span></div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a1ecb3f4f7207bce9f1739d947ce6c241"> 463</a></span> <span class="comment"></span> iterator <a class="code" href="classtlx_1_1btree__multiset.html#a1ecb3f4f7207bce9f1739d947ce6c241">insert</a>(iterator hint, <span class="keyword">const</span> key_type& x) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#aa218c2c89397f8d0484ef9438d540456">insert</a>(hint, x);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"></span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> //! Attempt to insert the range [first,last) of key_type into the B+</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> //! tree. Each key is inserted individually.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> InputIterator></div><div class="line"><a name="l00470"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ac048f549259de32da2acd742cce52d5c"> 470</a></span>  <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#ac048f549259de32da2acd742cce52d5c">insert</a>(InputIterator first, InputIterator last) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  InputIterator iter = first;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">while</span> (iter != last)</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696">insert</a>(*iter);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  ++iter;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment"></span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment"> //! Bulk load a sorted range [first,last). Loads items into leaves and</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment"> //! constructs a B-tree above them. The tree must be empty when calling this</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment"> //! function.</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> Iterator></div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#afa604e854df383bc24cc01d08428d5ac"> 483</a></span>  <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#afa604e854df383bc24cc01d08428d5ac">bulk_load</a>(Iterator first, Iterator last) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a3d0a35a00bc2ff5608fe613ea8fa47e6">bulk_load</a>(first, last);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="comment"></span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment"></span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment"> //! \name Public Erase Functions</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment"> //! Erases one (the first) entry of the given key.</span></div><div class="line"><a name="l00494"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#a3a79f5c030eea924dbd8fcc9417b9263"> 494</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classtlx_1_1btree__multiset.html#a3a79f5c030eea924dbd8fcc9417b9263">erase_one</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#a3a79f5c030eea924dbd8fcc9417b9263">erase_one</a>(key);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment"></span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment"> //! Erases all the entries of the given key. This is implemented using</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment"> //! erase_one() and thus not very efficient.</span></div><div class="line"><a name="l00500"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#ae57ff6dd1cb4dc347b892dfa87ea6613"> 500</a></span> <span class="comment"></span> size_type <a class="code" href="classtlx_1_1btree__multiset.html#ae57ff6dd1cb4dc347b892dfa87ea6613">erase</a>(<span class="keyword">const</span> key_type& key) {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ae57ff6dd1cb4dc347b892dfa87ea6613">erase</a>(key);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="comment"></span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="comment"> //! Erase the key/data pair referenced by the iterator.</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#af8b2d25c3e313e0b24656afe5cd4f6f2"> 505</a></span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#af8b2d25c3e313e0b24656afe5cd4f6f2">erase</a>(iterator iter) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> tree_.<a class="code" href="classtlx_1_1BTree.html#ae57ff6dd1cb4dc347b892dfa87ea6613">erase</a>(iter);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#ifdef TLX_BTREE_TODO</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="comment"> //! Erase all keys in the range [first,last). This function is currently</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="comment"></span><span class="comment"> //! not implemented by the B+ Tree.</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#ae57ff6dd1cb4dc347b892dfa87ea6613">erase</a>(iterator <span class="comment">/* first */</span>, iterator <span class="comment">/* last */</span>) {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  abort();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment"></span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment"></span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor">#ifdef TLX_BTREE_DEBUG</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="comment"> //! \name Debug Printing</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment"> //! Print out the B+ tree structure with keys onto the given ostream. This</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment"> //! function requires that the header is compiled with TLX_BTREE_DEBUG and</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment"> //! that key_type is printable via std::ostream.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment"></span> <span class="keywordtype">void</span> print(std::ostream& os)<span class="keyword"> const </span>{</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  tree_.print(os);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment"></span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment"> //! Print out only the leaves via the double linked list.</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="comment"></span> <span class="keywordtype">void</span> print_leaves(std::ostream& os)<span class="keyword"> const </span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  tree_.print_leaves(os);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment"></span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="comment"></span><span class="preprocessor">#endif</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment"> //! \name Verification of B+ Tree Invariants</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="comment"> //! \{</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="comment"> //! Run a thorough verification of all B+ tree invariants. The program</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="comment"> //! aborts via TLX_BTREE_ASSERT() if something is wrong.</span></div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classtlx_1_1btree__multiset.html#af26aef03a7dfaca8fabb99969312307a"> 546</a></span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classtlx_1_1btree__multiset.html#af26aef03a7dfaca8fabb99969312307a">verify</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  tree_.<a class="code" href="classtlx_1_1BTree.html#af26aef03a7dfaca8fabb99969312307a">verify</a>();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment"></span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment"> //! \}</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="comment"></span>};</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="comment"></span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="comment">//! \}</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="comment"></span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> } <span class="comment">// namespace tlx</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="preprocessor">#endif // !TLX_CONTAINER_BTREE_MULTISET_HEADER</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="comment">/******************************************************************************/</span></div><div class="ttc" id="classtlx_1_1btree__multiset_html"><div class="ttname"><a href="classtlx_1_1btree__multiset.html">tlx::btree_multiset</a></div><div class="ttdoc">Specialized B+ tree template class implementing STL&#39;s multiset container. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00041">btree_multiset.hpp:41</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a0ab5ce862c0331d9e45a6e1774fca131"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a0ab5ce862c0331d9e45a6e1774fca131">tlx::btree_multiset::max_size</a></div><div class="ttdeci">size_type max_size() const </div><div class="ttdoc">Returns the largest possible size of the B+ Tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00318">btree_multiset.hpp:318</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_ad69bd11391be1a1dba5c8202259664f8"><div class="ttname"><a href="classtlx_1_1BTree.html#ad69bd11391be1a1dba5c8202259664f8">tlx::BTree::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Constructs a read/data-write iterator that points to the first slot in the first leaf of the B+ tree...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01341">btree.hpp:1341</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a9c9766a96c492f3e9e5861d6b4f87387"><div class="ttname"><a href="classtlx_1_1BTree.html#a9c9766a96c492f3e9e5861d6b4f87387">tlx::BTree::find</a></div><div class="ttdeci">iterator find(const key_type &key)</div><div class="ttdoc">Tries to locate a key in the B+ tree and returns an iterator to the key/data slot if found...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01542">btree.hpp:1542</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a97bb054bc81e97ec55f0b539cdcbfcde"><div class="ttname"><a href="classtlx_1_1BTree.html#a97bb054bc81e97ec55f0b539cdcbfcde">tlx::BTree::equal_range</a></div><div class="ttdeci">std::pair< iterator, iterator > equal_range(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns both lower_bound() and upper_bound(). </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01695">btree.hpp:1695</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a4a380c8745ff0a1c814742821e85403e"><div class="ttname"><a href="classtlx_1_1BTree.html#a4a380c8745ff0a1c814742821e85403e">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::allow_duplicates</a></div><div class="ttdeci">static const bool allow_duplicates</div><div class="ttdoc">Sixth template parameter: Allow duplicate keys in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00150">btree.hpp:150</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ac1955b9b95ee812807d45be2475b3dd4"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ac1955b9b95ee812807d45be2475b3dd4">tlx::btree_multiset::operator></a></div><div class="ttdeci">bool operator>(const btree_multiset &other) const </div><div class="ttdoc">Greater relation. Based on operator<. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00416">btree_multiset.hpp:416</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a31fbffbdf311ce68ec99f0aebab5c0ea"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a31fbffbdf311ce68ec99f0aebab5c0ea">tlx::btree_multiset::lower_bound</a></div><div class="ttdeci">const_iterator lower_bound(const key_type &key) const </div><div class="ttdoc">Searches the B+ tree and returns a constant iterator to the first pair equal to or greater than key...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00365">btree_multiset.hpp:365</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a52e57d8d7e32f6d5a56227a8d1f899cf"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a52e57d8d7e32f6d5a56227a8d1f899cf">tlx::btree_multiset::leaf_slotmax</a></div><div class="ttdeci">static const unsigned short leaf_slotmax</div><div class="ttdoc">Base B+ tree parameter: The number of key/data slots in each leaf. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00104">btree_multiset.hpp:104</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a0ab5ce862c0331d9e45a6e1774fca131"><div class="ttname"><a href="classtlx_1_1BTree.html#a0ab5ce862c0331d9e45a6e1774fca131">tlx::BTree::max_size</a></div><div class="ttdeci">size_type max_size() const </div><div class="ttdoc">Returns the largest possible size of the B+ Tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01505">btree.hpp:1505</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a7462b1e2b24182127f494d58dbb95fa9"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a7462b1e2b24182127f494d58dbb95fa9">tlx::btree_multiset::key_compare</a></div><div class="ttdeci">Compare_ key_compare</div><div class="ttdoc">Second template parameter: Key comparison function object. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00052">btree_multiset.hpp:52</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a6295d47efda04de55c38cb8ea1cdb807"><div class="ttname"><a href="classtlx_1_1BTree.html#a6295d47efda04de55c38cb8ea1cdb807">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::debug</a></div><div class="ttdeci">static const bool debug</div><div class="ttdoc">Debug parameter: Prints out lots of debug information about how the algorithms change the tree...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00203">btree.hpp:203</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_af26aef03a7dfaca8fabb99969312307a"><div class="ttname"><a href="classtlx_1_1BTree.html#af26aef03a7dfaca8fabb99969312307a">tlx::BTree::verify</a></div><div class="ttdeci">void verify() const </div><div class="ttdoc">Run a thorough verification of all B+ tree invariants. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l03541">btree.hpp:3541</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a8b8497e30f5382f04b66ed4204019b30"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a8b8497e30f5382f04b66ed4204019b30">tlx::btree_multiset::get_stats</a></div><div class="ttdeci">const tree_stats & get_stats() const </div><div class="ttdoc">Return a const reference to the current statistics. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00323">btree_multiset.hpp:323</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a81a632bc519f850f4af56567ba404f4e"><div class="ttname"><a href="classtlx_1_1BTree.html#a81a632bc519f850f4af56567ba404f4e">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::self_verify</a></div><div class="ttdeci">static const bool self_verify</div><div class="ttdoc">Debug parameter: Enables expensive and thorough checking of the B+ tree invariants after each insert/...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00198">btree.hpp:198</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ac96cbe05b93e7c067ddbe1a6020d4f2b"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ac96cbe05b93e7c067ddbe1a6020d4f2b">tlx::btree_multiset::operator<=</a></div><div class="ttdeci">bool operator<=(const btree_multiset &other) const </div><div class="ttdoc">Less-equal relation. Based on operator<. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00421">btree_multiset.hpp:421</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_aa4b02d4f1a8500fb07a551069060709f"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#aa4b02d4f1a8500fb07a551069060709f">tlx::btree_multiset::begin</a></div><div class="ttdeci">const_iterator begin() const </div><div class="ttdoc">Constructs a read-only constant iterator that points to the first slot in the first leaf of the B+ tr...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00266">btree_multiset.hpp:266</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a77ce4303907bb816a959ac7b0725311e"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a77ce4303907bb816a959ac7b0725311e">tlx::btree_multiset::tree_stats</a></div><div class="ttdeci">btree_impl::tree_stats tree_stats</div><div class="ttdoc">Small structure containing statistics about the tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00095">btree_multiset.hpp:95</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a62c2add0ee33d7acce9f02077cd1da99"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a62c2add0ee33d7acce9f02077cd1da99">tlx::btree_multiset::key_comp</a></div><div class="ttdeci">key_compare key_comp() const </div><div class="ttdoc">Constant access to the key comparison object sorting the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00214">btree_multiset.hpp:214</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a3a79f5c030eea924dbd8fcc9417b9263"><div class="ttname"><a href="classtlx_1_1BTree.html#a3a79f5c030eea924dbd8fcc9417b9263">tlx::BTree::erase_one</a></div><div class="ttdeci">bool erase_one(const key_type &key)</div><div class="ttdoc">Erases one (the first) of the key/data pairs associated with the given key. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l02368">btree.hpp:2368</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_acfbc5374e81f060b1cdffeb9c494ae86"><div class="ttname"><a href="classtlx_1_1BTree.html#acfbc5374e81f060b1cdffeb9c494ae86">tlx::BTree::get_allocator</a></div><div class="ttdeci">allocator_type get_allocator() const </div><div class="ttdoc">Return the base node allocator provided during construction. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01232">btree.hpp:1232</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_acea44ed500a54b2bb93e16b86e81afa8"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#acea44ed500a54b2bb93e16b86e81afa8">tlx::btree_multiset::rbegin</a></div><div class="ttdeci">reverse_iterator rbegin()</div><div class="ttdoc">Constructs a read/data-write reverse iterator that points to the first invalid slot in the last leaf ...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00278">btree_multiset.hpp:278</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_af9e5dc32ba2b4cf9cf29e3a3314bbf59"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#af9e5dc32ba2b4cf9cf29e3a3314bbf59">tlx::btree_multiset::btree_multiset</a></div><div class="ttdeci">btree_multiset(InputIterator first, InputIterator last, const key_compare &kcf, const allocator_type &alloc=allocator_type())</div><div class="ttdoc">Constructor initializing a B+ tree with the range [first,last) and a special key comparison object...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00191">btree_multiset.hpp:191</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a9c9766a96c492f3e9e5861d6b4f87387"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a9c9766a96c492f3e9e5861d6b4f87387">tlx::btree_multiset::find</a></div><div class="ttdeci">iterator find(const key_type &key)</div><div class="ttdoc">Tries to locate a key in the B+ tree and returns an iterator to the key slot if found. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00341">btree_multiset.hpp:341</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a503ab01f6c0142145d3434f6924714e7"><div class="ttname"><a href="classtlx_1_1BTree.html#a503ab01f6c0142145d3434f6924714e7">tlx::BTree::size</a></div><div class="ttdeci">size_type size() const </div><div class="ttdoc">Return the number of key/data pairs in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01494">btree.hpp:1494</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ac6e61de369e994009e36f344f99c15ad"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ac6e61de369e994009e36f344f99c15ad">tlx::btree_multiset::empty</a></div><div class="ttdeci">bool empty() const </div><div class="ttdoc">Returns true if there is at least one key in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00312">btree_multiset.hpp:312</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a901955ac1cb674450b79aa9d192832b3"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a901955ac1cb674450b79aa9d192832b3">tlx::btree_multiset::tree_</a></div><div class="ttdeci">btree_impl tree_</div><div class="ttdoc">The contained implementation object. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00159">btree_multiset.hpp:159</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_ab42ea149fdde84e56ff0a7ed11e13aa8"><div class="ttname"><a href="classtlx_1_1BTree.html#ab42ea149fdde84e56ff0a7ed11e13aa8">tlx::BTree::value_comp</a></div><div class="ttdeci">value_compare value_comp() const </div><div class="ttdoc">Constant access to a constructed value_type comparison object. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01189">btree.hpp:1189</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a0d3d86d13f26293e1ddcff5569ad1ccb"><div class="ttname"><a href="classtlx_1_1BTree.html#a0d3d86d13f26293e1ddcff5569ad1ccb">tlx::BTree::exists</a></div><div class="ttdeci">bool exists(const key_type &key) const </div><div class="ttdoc">Non-STL function checking whether a key is in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01522">btree.hpp:1522</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a49b489a408a211a90e766329c0732d7b"><div class="ttname"><a href="classtlx_1_1BTree.html#a49b489a408a211a90e766329c0732d7b">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::size_type</a></div><div class="ttdeci">size_t size_type</div><div class="ttdoc">Size type used to count keys. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00171">btree.hpp:171</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_ac6e61de369e994009e36f344f99c15ad"><div class="ttname"><a href="classtlx_1_1BTree.html#ac6e61de369e994009e36f344f99c15ad">tlx::BTree::empty</a></div><div class="ttdeci">bool empty() const </div><div class="ttdoc">Returns true if there is at least one key/data pair in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01499">btree.hpp:1499</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ad69bd11391be1a1dba5c8202259664f8"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ad69bd11391be1a1dba5c8202259664f8">tlx::btree_multiset::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Constructs a read/data-write iterator that points to the first slot in the first leaf of the B+ tree...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00254">btree_multiset.hpp:254</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a00bce22abcfcd08fde238bf6dd349670"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a00bce22abcfcd08fde238bf6dd349670">tlx::btree_multiset::btree_impl</a></div><div class="ttdeci">BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type > btree_impl</div><div class="ttdoc">Implementation type of the btree_base. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00086">btree_multiset.hpp:86</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_acb65c421faf5d749d03882f64d184775"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#acb65c421faf5d749d03882f64d184775">tlx::btree_multiset::key_type</a></div><div class="ttdeci">Key_ key_type</div><div class="ttdoc">First template parameter: The key type of the btree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00049">btree_multiset.hpp:49</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a35dc4a1129cbbce38e6b5cf83876518f"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a35dc4a1129cbbce38e6b5cf83876518f">tlx::btree_multiset::value_type</a></div><div class="ttdeci">key_type value_type</div><div class="ttdoc">Construct the set value_type: the key_type. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00073">btree_multiset.hpp:73</a></div></div>
<div class="ttc" id="structtlx_1_1btree__multiset_1_1key__of__value_html"><div class="ttname"><a href="structtlx_1_1btree__multiset_1_1key__of__value.html">tlx::btree_multiset::key_of_value</a></div><div class="ttdoc">Key Extractor Struct. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00079">btree_multiset.hpp:79</a></div></div>
<div class="ttc" id="namespacetlx_html"><div class="ttname"><a href="namespacetlx.html">tlx</a></div><div class="ttdef"><b>Definition:</b> <a href="exclusive__scan_8hpp_source.html#l00017">exclusive_scan.hpp:17</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a23345bcc88140b212df6acbe628039b9"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a23345bcc88140b212df6acbe628039b9">tlx::btree_multiset::btree_multiset</a></div><div class="ttdeci">btree_multiset(const key_compare &kcf, const allocator_type &alloc=allocator_type())</div><div class="ttdoc">Constructor initializing an empty B+ tree with a special key comparison object. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00175">btree_multiset.hpp:175</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_addd4e2b6ff9c7bef508bc908caabb2d4"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#addd4e2b6ff9c7bef508bc908caabb2d4">tlx::btree_multiset::count</a></div><div class="ttdeci">size_type count(const key_type &key) const </div><div class="ttdoc">Tries to locate a key in the B+ tree and returns the number of identical key entries found...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00353">btree_multiset.hpp:353</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_afa604e854df383bc24cc01d08428d5ac"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#afa604e854df383bc24cc01d08428d5ac">tlx::btree_multiset::bulk_load</a></div><div class="ttdeci">void bulk_load(Iterator first, Iterator last)</div><div class="ttdoc">Bulk load a sorted range [first,last). </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00483">btree_multiset.hpp:483</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a4a380c8745ff0a1c814742821e85403e"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a4a380c8745ff0a1c814742821e85403e">tlx::btree_multiset::allow_duplicates</a></div><div class="ttdeci">static const bool allow_duplicates</div><div class="ttdoc">Operational parameter: Allow duplicate keys in the btree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00130">btree_multiset.hpp:130</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a503ab01f6c0142145d3434f6924714e7"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a503ab01f6c0142145d3434f6924714e7">tlx::btree_multiset::size</a></div><div class="ttdeci">size_type size() const </div><div class="ttdoc">Return the number of keys in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00307">btree_multiset.hpp:307</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_af26aef03a7dfaca8fabb99969312307a"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#af26aef03a7dfaca8fabb99969312307a">tlx::btree_multiset::verify</a></div><div class="ttdeci">void verify() const </div><div class="ttdoc">Run a thorough verification of all B+ tree invariants. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00546">btree_multiset.hpp:546</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a3d0a35a00bc2ff5608fe613ea8fa47e6"><div class="ttname"><a href="classtlx_1_1BTree.html#a3d0a35a00bc2ff5608fe613ea8fa47e6">tlx::BTree::bulk_load</a></div><div class="ttdeci">void bulk_load(Iterator ibegin, Iterator iend)</div><div class="ttdoc">Bulk load a sorted range. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l02155">btree.hpp:2155</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a63fd0e61d25808851c78559d09297686"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a63fd0e61d25808851c78559d09297686">tlx::btree_multiset::value_compare</a></div><div class="ttdeci">btree_impl::value_compare value_compare</div><div class="ttdoc">Function class comparing two value_type keys. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00089">btree_multiset.hpp:89</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_ac8bb3912a3ce86b15842e79d0b421204"><div class="ttname"><a href="classtlx_1_1BTree.html#ac8bb3912a3ce86b15842e79d0b421204">tlx::BTree::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Frees all key/data pairs and all nodes of the tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01294">btree.hpp:1294</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_adc204502ef1606c9daa4a613da6aacfb"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#adc204502ef1606c9daa4a613da6aacfb">tlx::btree_multiset::find</a></div><div class="ttdeci">const_iterator find(const key_type &key) const </div><div class="ttdoc">Tries to locate a key in the B+ tree and returns an constant iterator to the key slot if found...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00347">btree_multiset.hpp:347</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a552a180d973faf4f7ccc14b7d639a160"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a552a180d973faf4f7ccc14b7d639a160">tlx::btree_multiset::allocator_type</a></div><div class="ttdeci">Alloc_ allocator_type</div><div class="ttdoc">Fourth template parameter: STL allocator. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00059">btree_multiset.hpp:59</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a04886aa70c34d66738e78bf70c675e66"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a04886aa70c34d66738e78bf70c675e66">tlx::btree_multiset::rbegin</a></div><div class="ttdeci">const_reverse_iterator rbegin() const </div><div class="ttdoc">Constructs a read-only reverse iterator that points to the first invalid slot in the last leaf of the...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00290">btree_multiset.hpp:290</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a68c599ddcbfddc65170de524ac165e44"><div class="ttname"><a href="classtlx_1_1BTree.html#a68c599ddcbfddc65170de524ac165e44">tlx::BTree::rend</a></div><div class="ttdeci">reverse_iterator rend()</div><div class="ttdoc">Constructs a read/data-write reverse iterator that points to the first slot in the first leaf of the ...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01371">btree.hpp:1371</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_acea44ed500a54b2bb93e16b86e81afa8"><div class="ttname"><a href="classtlx_1_1BTree.html#acea44ed500a54b2bb93e16b86e81afa8">tlx::BTree::rbegin</a></div><div class="ttdeci">reverse_iterator rbegin()</div><div class="ttdoc">Constructs a read/data-write reverse iterator that points to the first invalid slot in the last leaf ...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01365">btree.hpp:1365</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_addd4e2b6ff9c7bef508bc908caabb2d4"><div class="ttname"><a href="classtlx_1_1BTree.html#addd4e2b6ff9c7bef508bc908caabb2d4">tlx::BTree::count</a></div><div class="ttdeci">size_type count(const key_type &key) const </div><div class="ttdoc">Tries to locate a key in the B+ tree and returns the number of identical key entries found...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01584">btree.hpp:1584</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a6295d47efda04de55c38cb8ea1cdb807"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a6295d47efda04de55c38cb8ea1cdb807">tlx::btree_multiset::debug</a></div><div class="ttdeci">static const bool debug</div><div class="ttdoc">Debug parameter: Prints out lots of debug information about how the algorithms change the tree...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00127">btree_multiset.hpp:127</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_adc124f3a410b4095f37746721151d696"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#adc124f3a410b4095f37746721151d696">tlx::btree_multiset::insert</a></div><div class="ttdeci">iterator insert(const key_type &x)</div><div class="ttdoc">Attempt to insert a key into the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00457">btree_multiset.hpp:457</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a004e76f14b7697d3801e3b1d397da5a5"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a004e76f14b7697d3801e3b1d397da5a5">tlx::btree_multiset::inner_slotmax</a></div><div class="ttdeci">static const unsigned short inner_slotmax</div><div class="ttdoc">Base B+ tree parameter: The number of key slots in each inner node, this can differ from slots in eac...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00108">btree_multiset.hpp:108</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a3a79f5c030eea924dbd8fcc9417b9263"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a3a79f5c030eea924dbd8fcc9417b9263">tlx::btree_multiset::erase_one</a></div><div class="ttdeci">bool erase_one(const key_type &key)</div><div class="ttdoc">Erases one (the first) entry of the given key. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00494">btree_multiset.hpp:494</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a373c61cca9b31735f4548b5b59b70184"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a373c61cca9b31735f4548b5b59b70184">tlx::btree_multiset::lower_bound</a></div><div class="ttdeci">iterator lower_bound(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns an iterator to the first pair equal to or greater than key...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00359">btree_multiset.hpp:359</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a4040aecad09bb71686d455eb8643fde3"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a4040aecad09bb71686d455eb8643fde3">tlx::btree_multiset::~btree_multiset</a></div><div class="ttdeci">~btree_multiset()</div><div class="ttdoc">Frees up all used B+ tree memory pages. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00199">btree_multiset.hpp:199</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_acfbc5374e81f060b1cdffeb9c494ae86"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#acfbc5374e81f060b1cdffeb9c494ae86">tlx::btree_multiset::get_allocator</a></div><div class="ttdeci">allocator_type get_allocator() const </div><div class="ttdoc">Return the base node allocator provided during construction. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00231">btree_multiset.hpp:231</a></div></div>
<div class="ttc" id="namespacetlx_html_ade1320658af9846df1831480a96e7a38"><div class="ttname"><a href="namespacetlx.html#ade1320658af9846df1831480a96e7a38">tlx::swap</a></div><div class="ttdeci">void swap(CountingPtr< A, D > &a1, CountingPtr< A, D > &a2) noexcept</div><div class="ttdoc">swap enclosed object with another counting pointer (no reference counts need change) ...</div><div class="ttdef"><b>Definition:</b> <a href="counting__ptr_8hpp_source.html#l00320">counting_ptr.hpp:320</a></div></div>
<div class="ttc" id="btree_8hpp_html"><div class="ttname"><a href="btree_8hpp.html">btree.hpp</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_acad38d52497a975bfb6f2f6acd76631f"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#acad38d52497a975bfb6f2f6acd76631f">tlx::btree_multiset::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdoc">Constructs a read/data-write iterator that points to the first invalid slot in the last leaf of the B...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00260">btree_multiset.hpp:260</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a009237af9bb96dbedc5a72578122a336"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a009237af9bb96dbedc5a72578122a336">tlx::btree_multiset::btree_multiset</a></div><div class="ttdeci">btree_multiset(InputIterator first, InputIterator last, const allocator_type &alloc=allocator_type())</div><div class="ttdoc">Constructor initializing a B+ tree with the range [first,last) </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00182">btree_multiset.hpp:182</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_afac99371679d954e37aefa29118a6459"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#afac99371679d954e37aefa29118a6459">tlx::btree_multiset::iterator</a></div><div class="ttdeci">btree_impl::iterator iterator</div><div class="ttdoc">STL-like iterator object for B+ tree items. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00140">btree_multiset.hpp:140</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_acad38d52497a975bfb6f2f6acd76631f"><div class="ttname"><a href="classtlx_1_1BTree.html#acad38d52497a975bfb6f2f6acd76631f">tlx::BTree::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdoc">Constructs a read/data-write iterator that points to the first invalid slot in the last leaf of the B...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01347">btree.hpp:1347</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a080458f85e4aefc31cc89767613243df"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a080458f85e4aefc31cc89767613243df">tlx::btree_multiset::reverse_iterator</a></div><div class="ttdeci">btree_impl::reverse_iterator reverse_iterator</div><div class="ttdoc">create mutable reverse iterator by using STL magic </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00147">btree_multiset.hpp:147</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a52e57d8d7e32f6d5a56227a8d1f899cf"><div class="ttname"><a href="classtlx_1_1BTree.html#a52e57d8d7e32f6d5a56227a8d1f899cf">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::leaf_slotmax</a></div><div class="ttdeci">static const unsigned short leaf_slotmax</div><div class="ttdoc">Base B+ tree parameter: The number of key/data slots in each leaf. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00180">btree.hpp:180</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ac8bb3912a3ce86b15842e79d0b421204"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ac8bb3912a3ce86b15842e79d0b421204">tlx::btree_multiset::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Frees all keys and all nodes of the tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00242">btree_multiset.hpp:242</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_abbec00fa1cdcfbf6b78482915c644dba"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#abbec00fa1cdcfbf6b78482915c644dba">tlx::btree_multiset::leaf_slotmin</a></div><div class="ttdeci">static const unsigned short leaf_slotmin</div><div class="ttdoc">Computed B+ tree parameter: The minimum number of key slots used in a leaf. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00113">btree_multiset.hpp:113</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_aac281c225573faca4f1ccca1088fc91f"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#aac281c225573faca4f1ccca1088fc91f">tlx::btree_multiset::operator<</a></div><div class="ttdeci">bool operator<(const btree_multiset &other) const </div><div class="ttdoc">Total ordering relation of B+ trees of the same type. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00411">btree_multiset.hpp:411</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a9fd083659d2c145e58b6589cca5ed5e1"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a9fd083659d2c145e58b6589cca5ed5e1">tlx::btree_multiset::operator=</a></div><div class="ttdeci">btree_multiset & operator=(const btree_multiset &other)</div><div class="ttdoc">Assignment operator. All the keys are copied. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00437">btree_multiset.hpp:437</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_abbec00fa1cdcfbf6b78482915c644dba"><div class="ttname"><a href="classtlx_1_1BTree.html#abbec00fa1cdcfbf6b78482915c644dba">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::leaf_slotmin</a></div><div class="ttdeci">static const unsigned short leaf_slotmin</div><div class="ttdoc">Computed B+ tree parameter: The minimum number of key/data slots used in a leaf. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00189">btree.hpp:189</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a81a632bc519f850f4af56567ba404f4e"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a81a632bc519f850f4af56567ba404f4e">tlx::btree_multiset::self_verify</a></div><div class="ttdeci">static const bool self_verify</div><div class="ttdoc">Debug parameter: Enables expensive and thorough checking of the B+ tree invariants after each insert/...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00122">btree_multiset.hpp:122</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a1be1cfb6ae3135c01d8e8d8fcfbe0ee8"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a1be1cfb6ae3135c01d8e8d8fcfbe0ee8">tlx::btree_multiset::size_type</a></div><div class="ttdeci">btree_impl::size_type size_type</div><div class="ttdoc">Size type used to count keys. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00092">btree_multiset.hpp:92</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html"><div class="ttname"><a href="classtlx_1_1BTree.html">tlx::BTree</a></div><div class="ttdoc">Basic class implementing a B+ tree data structure in memory. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00124">btree.hpp:124</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a482b50e623a123f653e2a91f113a507b"><div class="ttname"><a href="classtlx_1_1BTree.html#a482b50e623a123f653e2a91f113a507b">tlx::BTree::upper_bound</a></div><div class="ttdeci">iterator upper_bound(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns an iterator to the first pair greater than key, or end() if all keys...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01656">btree.hpp:1656</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a4e16fc20a38234d65573c5e4eac083e4"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a4e16fc20a38234d65573c5e4eac083e4">tlx::btree_multiset::const_reverse_iterator</a></div><div class="ttdeci">btree_impl::const_reverse_iterator const_reverse_iterator</div><div class="ttdoc">create constant reverse iterator by using STL magic </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00150">btree_multiset.hpp:150</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a416b2e639a4ec04429632c3ee85e747c"><div class="ttname"><a href="classtlx_1_1BTree.html#a416b2e639a4ec04429632c3ee85e747c">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::inner_slotmin</a></div><div class="ttdeci">static const unsigned short inner_slotmin</div><div class="ttdoc">Computed B+ tree parameter: The minimum number of key slots used in an inner node. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00194">btree.hpp:194</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_afcd3bad1ced519acc3641a8f83596d37"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#afcd3bad1ced519acc3641a8f83596d37">tlx::btree_multiset::const_iterator</a></div><div class="ttdeci">btree_impl::const_iterator const_iterator</div><div class="ttdoc">STL-like iterator object for B+ tree items. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00144">btree_multiset.hpp:144</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a3b5e61b63a8f02f388e295a287aab316"><div class="ttname"><a href="classtlx_1_1BTree.html#a3b5e61b63a8f02f388e295a287aab316">tlx::BTree::get_stats</a></div><div class="ttdeci">const struct tree_stats & get_stats() const </div><div class="ttdoc">Return a const reference to the current statistics. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01510">btree.hpp:1510</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a97bb054bc81e97ec55f0b539cdcbfcde"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a97bb054bc81e97ec55f0b539cdcbfcde">tlx::btree_multiset::equal_range</a></div><div class="ttdeci">std::pair< iterator, iterator > equal_range(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns both lower_bound() and upper_bound(). </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00382">btree_multiset.hpp:382</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a99609d25589437b30cb42dab922bfaa9"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a99609d25589437b30cb42dab922bfaa9">tlx::btree_multiset::upper_bound</a></div><div class="ttdeci">const_iterator upper_bound(const key_type &key) const </div><div class="ttdoc">Searches the B+ tree and returns a constant iterator to the first pair greater than key...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00377">btree_multiset.hpp:377</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_aa218c2c89397f8d0484ef9438d540456"><div class="ttname"><a href="classtlx_1_1BTree.html#aa218c2c89397f8d0484ef9438d540456">tlx::BTree::insert</a></div><div class="ttdeci">std::pair< iterator, bool > insert(const value_type &x)</div><div class="ttdoc">Attempt to insert a key/data pair into the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01846">btree.hpp:1846</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a004e76f14b7697d3801e3b1d397da5a5"><div class="ttname"><a href="classtlx_1_1BTree.html#a004e76f14b7697d3801e3b1d397da5a5">tlx::BTree< key_type, value_type, key_of_value, key_compare, traits, true, allocator_type >::inner_slotmax</a></div><div class="ttdeci">static const unsigned short inner_slotmax</div><div class="ttdoc">Base B+ tree parameter: The number of key slots in each inner node, this can differ from slots in eac...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l00184">btree.hpp:184</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a68c599ddcbfddc65170de524ac165e44"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a68c599ddcbfddc65170de524ac165e44">tlx::btree_multiset::rend</a></div><div class="ttdeci">reverse_iterator rend()</div><div class="ttdoc">Constructs a read/data-write reverse iterator that points to the first slot in the first leaf of the ...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00284">btree_multiset.hpp:284</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a656898a6ce97897f57f392a739fcaa78"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a656898a6ce97897f57f392a739fcaa78">tlx::btree_multiset::btree_multiset</a></div><div class="ttdeci">btree_multiset(const allocator_type &alloc=allocator_type())</div><div class="ttdoc">Default constructor initializing an empty B+ tree with the standard key comparison function...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00169">btree_multiset.hpp:169</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_af8b2d25c3e313e0b24656afe5cd4f6f2"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#af8b2d25c3e313e0b24656afe5cd4f6f2">tlx::btree_multiset::erase</a></div><div class="ttdeci">void erase(iterator iter)</div><div class="ttdoc">Erase the key/data pair referenced by the iterator. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00505">btree_multiset.hpp:505</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a62c2add0ee33d7acce9f02077cd1da99"><div class="ttname"><a href="classtlx_1_1BTree.html#a62c2add0ee33d7acce9f02077cd1da99">tlx::BTree::key_comp</a></div><div class="ttdeci">key_compare key_comp() const </div><div class="ttdoc">Constant access to the key comparison object sorting the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01183">btree.hpp:1183</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a33c1ee0eb39360edec2a985301b9d631"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a33c1ee0eb39360edec2a985301b9d631">tlx::btree_multiset::equal_range</a></div><div class="ttdeci">std::pair< const_iterator, const_iterator > equal_range(const key_type &key) const </div><div class="ttdoc">Searches the B+ tree and returns both lower_bound() and upper_bound(). </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00387">btree_multiset.hpp:387</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a416b2e639a4ec04429632c3ee85e747c"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a416b2e639a4ec04429632c3ee85e747c">tlx::btree_multiset::inner_slotmin</a></div><div class="ttdeci">static const unsigned short inner_slotmin</div><div class="ttdoc">Computed B+ tree parameter: The minimum number of key slots used in an inner node. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00118">btree_multiset.hpp:118</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a0d3d86d13f26293e1ddcff5569ad1ccb"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a0d3d86d13f26293e1ddcff5569ad1ccb">tlx::btree_multiset::exists</a></div><div class="ttdeci">bool exists(const key_type &key) const </div><div class="ttdoc">Non-STL function checking whether a key is in the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00335">btree_multiset.hpp:335</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a7bc47c4f803502b8dd327f754f139d82"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a7bc47c4f803502b8dd327f754f139d82">tlx::btree_multiset::operator>=</a></div><div class="ttdeci">bool operator>=(const btree_multiset &other) const </div><div class="ttdoc">Greater-equal relation. Based on operator<. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00426">btree_multiset.hpp:426</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_ae57ff6dd1cb4dc347b892dfa87ea6613"><div class="ttname"><a href="classtlx_1_1BTree.html#ae57ff6dd1cb4dc347b892dfa87ea6613">tlx::BTree::erase</a></div><div class="ttdeci">size_type erase(const key_type &key)</div><div class="ttdoc">Erases all the key/data pairs associated with the given key. </div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l02392">btree.hpp:2392</a></div></div>
<div class="ttc" id="classtlx_1_1BTree_html_a373c61cca9b31735f4548b5b59b70184"><div class="ttname"><a href="classtlx_1_1BTree.html#a373c61cca9b31735f4548b5b59b70184">tlx::BTree::lower_bound</a></div><div class="ttdeci">iterator lower_bound(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns an iterator to the first pair equal to or greater than key...</div><div class="ttdef"><b>Definition:</b> <a href="btree_8hpp_source.html#l01616">btree.hpp:1616</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a38ffbf220e298d1ee8c79307009cfa00"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a38ffbf220e298d1ee8c79307009cfa00">tlx::btree_multiset::TLX_BTREE_FRIENDS</a></div><div class="ttdeci">TLX_BTREE_FRIENDS</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00066">btree_multiset.hpp:66</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a350132543d80a1c1e5be844e6d2878ea"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a350132543d80a1c1e5be844e6d2878ea">tlx::btree_multiset::end</a></div><div class="ttdeci">const_iterator end() const </div><div class="ttdoc">Constructs a read-only constant iterator that points to the first invalid slot in the last leaf of th...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00272">btree_multiset.hpp:272</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_add985b33b72ef68812f3986e8df807f5"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#add985b33b72ef68812f3986e8df807f5">tlx::btree_multiset::traits</a></div><div class="ttdeci">Traits_ traits</div><div class="ttdoc">Third template parameter: Traits object used to define more parameters of the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00056">btree_multiset.hpp:56</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a1ecb3f4f7207bce9f1739d947ce6c241"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a1ecb3f4f7207bce9f1739d947ce6c241">tlx::btree_multiset::insert</a></div><div class="ttdeci">iterator insert(iterator hint, const key_type &x)</div><div class="ttdoc">Attempt to insert a key into the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00463">btree_multiset.hpp:463</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a15f605ad9ba8d26f0d0f314e21452a36"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a15f605ad9ba8d26f0d0f314e21452a36">tlx::btree_multiset::operator!=</a></div><div class="ttdeci">bool operator!=(const btree_multiset &other) const </div><div class="ttdoc">Inequality relation. Based on operator==. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00405">btree_multiset.hpp:405</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ab3c414470d5cea2986cfab7a90146cb6"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ab3c414470d5cea2986cfab7a90146cb6">tlx::btree_multiset::rend</a></div><div class="ttdeci">const_reverse_iterator rend() const </div><div class="ttdoc">Constructs a read-only reverse iterator that points to the first slot in the first leaf of the B+ tre...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00296">btree_multiset.hpp:296</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a87b585ae5718fad4c054b5a41d7972d3"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a87b585ae5718fad4c054b5a41d7972d3">tlx::btree_multiset::swap</a></div><div class="ttdeci">void swap(btree_multiset &from)</div><div class="ttdoc">Fast swapping of two identical B+ tree objects. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00203">btree_multiset.hpp:203</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ac048f549259de32da2acd742cce52d5c"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ac048f549259de32da2acd742cce52d5c">tlx::btree_multiset::insert</a></div><div class="ttdeci">void insert(InputIterator first, InputIterator last)</div><div class="ttdoc">Attempt to insert the range [first,last) of key_type into the B+ tree. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00470">btree_multiset.hpp:470</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ab42ea149fdde84e56ff0a7ed11e13aa8"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ab42ea149fdde84e56ff0a7ed11e13aa8">tlx::btree_multiset::value_comp</a></div><div class="ttdeci">value_compare value_comp() const </div><div class="ttdoc">Constant access to a constructed value_type comparison object. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00220">btree_multiset.hpp:220</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a482b50e623a123f653e2a91f113a507b"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a482b50e623a123f653e2a91f113a507b">tlx::btree_multiset::upper_bound</a></div><div class="ttdeci">iterator upper_bound(const key_type &key)</div><div class="ttdoc">Searches the B+ tree and returns an iterator to the first pair greater than key, or end() if all keys...</div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00371">btree_multiset.hpp:371</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_a91e0e10e972a10087c0a999e958c8675"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#a91e0e10e972a10087c0a999e958c8675">tlx::btree_multiset::btree_multiset</a></div><div class="ttdeci">btree_multiset(const btree_multiset &other)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00445">btree_multiset.hpp:445</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_af9c5afbc716b391b097f61eac2e7d146"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#af9c5afbc716b391b097f61eac2e7d146">tlx::btree_multiset::operator==</a></div><div class="ttdeci">bool operator==(const btree_multiset &other) const </div><div class="ttdoc">Equality relation of B+ trees of the same type. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00400">btree_multiset.hpp:400</a></div></div>
<div class="ttc" id="classtlx_1_1btree__multiset_html_ae57ff6dd1cb4dc347b892dfa87ea6613"><div class="ttname"><a href="classtlx_1_1btree__multiset.html#ae57ff6dd1cb4dc347b892dfa87ea6613">tlx::btree_multiset::erase</a></div><div class="ttdeci">size_type erase(const key_type &key)</div><div class="ttdoc">Erases all the entries of the given key. </div><div class="ttdef"><b>Definition:</b> <a href="btree__multiset_8hpp_source.html#l00500">btree_multiset.hpp:500</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_8b4d4685f7eaf29e53aad23645930303.html">tlx</a></li><li class="navelem"><a class="el" href="dir_dab8345dcd2ad8c9400f2b10c593e3dd.html">container</a></li><li class="navelem"><a class="el" href="btree__multiset_8hpp.html">btree_multiset.hpp</a></li>
<li class="footer">Generated on Sat Oct 2 2021 20:29:00 for tlx by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>
</div>
</body>
</html>