23
23
<div class="contents">
24
<h1>Distance metrics<br/>
24
<h1>Set algorithms<br/>
26
[<a class="el" href="a00124.html">Set algorithms</a>]</small>
26
[<a class="el" href="a00118.html">BitMagic C++ Library</a>]</small>
28
28
<p><div class="dynheader">
29
Collaboration diagram for Distance metrics:</div>
29
Collaboration diagram for Set algorithms:</div>
30
30
<div class="dynsection">
31
31
<center><table><tr><td><img src="a00125.png" border="0" alt="" usemap="#a00125_map"/>
32
32
<map name="a00125_map" id="a00125">
33
<area shape="rect" href="a00124.html" title="Set algorithms" alt="" coords="7,5,111,35"/></map></td></tr></table></center>
33
<area shape="rect" href="a00118.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/><area shape="rect" href="a00126.html" title="Distance metrics" alt="" coords="352,5,472,35"/></map></td></tr></table></center>
36
36
<table border="0" cellpadding="0" cellspacing="0">
37
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
38
<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a> { <br/>
39
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce">bm::COUNT_AND</a> = set_COUNT_AND,
40
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061">bm::COUNT_XOR</a> = set_COUNT_XOR,
41
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb">bm::COUNT_OR</a> = set_COUNT_OR,
42
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62">bm::COUNT_SUB_AB</a> = set_COUNT_SUB_AB,
44
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400">bm::COUNT_SUB_BA</a> = set_COUNT_SUB_BA,
45
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2">bm::COUNT_A</a> = set_COUNT_A,
46
<a class="el" href="a00125.html#ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516">bm::COUNT_B</a> = set_COUNT_B
49
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Distance metrics codes defined for vectors A and B. </p>
50
<a href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">More...</a><br/></td></tr>
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
38
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html">bm::random_subset< BV ></a></td></tr>
39
<tr><td colspan="2"><h2>Modules</h2></td></tr>
40
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">Distance metrics</a></td></tr>
51
41
<tr><td colspan="2"><h2>Functions</h2></td></tr>
52
<tr><td class="memItemLeft" align="right" valign="top">distance_metric </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#ga158946ea41ca66c3e1bca62c92684788">bm::operation2metric</a> (set_operation op)</td></tr>
53
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert set operation into compatible distance metric. <a href="#ga158946ea41ca66c3e1bca62c92684788"></a><br/></td></tr>
54
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
55
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga815fef76f02576ab9ab58de0a45d8a4b">bm::distance_operation</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance computing template function. <a href="#ga815fef76f02576ab9ab58de0a45d8a4b"></a><br/></td></tr>
57
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
58
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gaa66525fd7a3f823d73678252a235982e">bm::distance_operation_any</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance screening template function. <a href="#gaa66525fd7a3f823d73678252a235982e"></a><br/></td></tr>
60
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
61
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gae451cb4b87e8c0859b0614d2ffb99737">bm::count_and</a> (const BV &bv1, const BV &bv2)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of AND operation of two bitsets. <a href="#gae451cb4b87e8c0859b0614d2ffb99737"></a><br/></td></tr>
63
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
64
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga2d5393e05bcfc540840a4cee67fb771f">bm::any_and</a> (const BV &bv1, const BV &bv2)</td></tr>
65
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in AND operation of two bitsets. <a href="#ga2d5393e05bcfc540840a4cee67fb771f"></a><br/></td></tr>
66
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
67
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gafc64a082dcaee07f70f7faf3e24f844e">bm::count_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
68
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of XOR operation of two bitsets. <a href="#gafc64a082dcaee07f70f7faf3e24f844e"></a><br/></td></tr>
69
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
70
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga2d63f41244b82d233acb53d88b326b82">bm::any_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
71
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in XOR operation of two bitsets. <a href="#ga2d63f41244b82d233acb53d88b326b82"></a><br/></td></tr>
72
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
73
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga902d8c1cd1f8a2538cd47d47f5d8d605">bm::count_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
74
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of SUB operation of two bitsets. <a href="#ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><br/></td></tr>
75
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
76
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gabde2e210b9b1edd190e1f5a9ff22344c">bm::any_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
77
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in SUB operation of two bitsets. <a href="#gabde2e210b9b1edd190e1f5a9ff22344c"></a><br/></td></tr>
78
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
79
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga803c564668703fc3bf80067570c2c905">bm::count_or</a> (const BV &bv1, const BV &bv2)</td></tr>
80
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes bitcount of OR operation of two bitsets. <a href="#ga803c564668703fc3bf80067570c2c905"></a><br/></td></tr>
81
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
82
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gaeda4f0cf54aa464cec09e740100caa79">bm::any_or</a> (const BV &bv1, const BV &bv2)</td></tr>
83
<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes if there is any bit in OR operation of two bitsets. <a href="#gaeda4f0cf54aa464cec09e740100caa79"></a><br/></td></tr>
42
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
43
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga54ff78528c99ae3ca443eb99ba44785b">bm::combine_or</a> (BV &bv, It first, It last)</td></tr>
44
<tr><td class="mdescLeft"> </td><td class="mdescRight">OR Combine bitvector and the iterable sequence. <a href="#ga54ff78528c99ae3ca443eb99ba44785b"></a><br/></td></tr>
45
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
46
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga3cb362aee03de6a321495100ae5c8375">bm::combine_xor</a> (BV &bv, It first, It last)</td></tr>
47
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR Combine bitvector and the iterable sequence. <a href="#ga3cb362aee03de6a321495100ae5c8375"></a><br/></td></tr>
48
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
49
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gab88c5bf51484323e0139aa789d7f0b98">bm::combine_sub</a> (BV &bv, It first, It last)</td></tr>
50
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB Combine bitvector and the iterable sequence. <a href="#gab88c5bf51484323e0139aa789d7f0b98"></a><br/></td></tr>
51
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
52
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga22922f71bd1eec8a5b663dc77b90cf6c">bm::combine_and_sorted</a> (BV &bv, It first, It last)</td></tr>
53
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#ga22922f71bd1eec8a5b663dc77b90cf6c"></a><br/></td></tr>
54
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
55
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#ga819bdab57a624a08456ea79161b9c5d2">bm::combine_and</a> (BV &bv, It first, It last)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#ga819bdab57a624a08456ea79161b9c5d2"></a><br/></td></tr>
57
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
58
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gac7a59d3bc266310ec127cb3efadb0d33">bm::count_intervals</a> (const BV &bv)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute number of bit intervals (GAPs) in the bitvector. <a href="#gac7a59d3bc266310ec127cb3efadb0d33"></a><br/></td></tr>
60
<tr><td class="memTemplParams" colspan="2">template<class BV , class It > </td></tr>
61
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#gacd88ed9539553dd93419b7029e8a4584">bm::export_array</a> (BV &bv, It first, It last)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">Export bitset from an array of binary data representing the bit vector. <a href="#gacd88ed9539553dd93419b7029e8a4584"></a><br/></td></tr>
85
64
<hr/><a name="_details"></a><h2>Detailed Description</h2>
86
<p>Algorithms to compute binary distance metrics </p>
87
<hr/><h2>Enumeration Type Documentation</h2>
88
<a class="anchor" id="gac38d64c8b27b652413a664cddd4d40ab"></a><!-- doxytag: member="bm::distance_metric" ref="gac38d64c8b27b652413a664cddd4d40ab" args="" -->
90
<div class="memproto">
91
<table class="memname">
93
<td class="memname">enum <a class="el" href="a00125.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a></td>
99
<p>Distance metrics codes defined for vectors A and B. </p>
100
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
101
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce"></a><!-- doxytag: member="COUNT_AND" ref="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce" args="" -->COUNT_AND</em> </td><td>
102
<p>(A & B).count() </p>
104
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061"></a><!-- doxytag: member="COUNT_XOR" ref="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061" args="" -->COUNT_XOR</em> </td><td>
105
<p>(A ^ B).count() </p>
107
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb"></a><!-- doxytag: member="COUNT_OR" ref="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb" args="" -->COUNT_OR</em> </td><td>
108
<p>(A | B).count() </p>
110
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62"></a><!-- doxytag: member="COUNT_SUB_AB" ref="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62" args="" -->COUNT_SUB_AB</em> </td><td>
111
<p>(A - B).count() </p>
113
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400"></a><!-- doxytag: member="COUNT_SUB_BA" ref="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400" args="" -->COUNT_SUB_BA</em> </td><td>
114
<p>(B - A).count() </p>
116
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2"></a><!-- doxytag: member="COUNT_A" ref="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2" args="" -->COUNT_A</em> </td><td>
119
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516"></a><!-- doxytag: member="COUNT_B" ref="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516" args="" -->COUNT_B</em> </td><td>
126
<p>Definition at line <a class="el" href="a00089_source.html#l00053">53</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
65
<p>Set algorithms </p>
130
66
<hr/><h2>Function Documentation</h2>
131
<a class="anchor" id="ga2d5393e05bcfc540840a4cee67fb771f"></a><!-- doxytag: member="bm::any_and" ref="ga2d5393e05bcfc540840a4cee67fb771f" args="(const BV &bv1, const BV &bv2)" -->
132
<div class="memitem">
133
<div class="memproto">
134
<div class="memtemplate">
135
template<class BV > </div>
136
<table class="memname">
138
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_and </td>
140
<td class="paramtype">const BV & </td>
141
<td class="paramname"> <em>bv1</em>, </td>
144
<td class="paramkey"></td>
146
<td class="paramtype">const BV & </td>
147
<td class="paramname"> <em>bv2</em></td><td> </td>
152
<td></td><td></td><td><code> [inline]</code></td>
158
<p>Computes if there is any bit in AND operation of two bitsets. </p>
159
<dl><dt><b>Parameters:</b></dt><dd>
160
<table border="0" cellspacing="2" cellpadding="0">
161
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
162
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
166
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
168
<p>Definition at line <a class="el" href="a00089_source.html#l00959">959</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
170
<p>References <a class="el" href="a00089_source.html#l00055">bm::COUNT_AND</a>, <a class="el" href="a00089_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
174
<a class="anchor" id="gaeda4f0cf54aa464cec09e740100caa79"></a><!-- doxytag: member="bm::any_or" ref="gaeda4f0cf54aa464cec09e740100caa79" args="(const BV &bv1, const BV &bv2)" -->
175
<div class="memitem">
176
<div class="memproto">
177
<div class="memtemplate">
178
template<class BV > </div>
179
<table class="memname">
181
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_or </td>
183
<td class="paramtype">const BV & </td>
184
<td class="paramname"> <em>bv1</em>, </td>
187
<td class="paramkey"></td>
189
<td class="paramtype">const BV & </td>
190
<td class="paramname"> <em>bv2</em></td><td> </td>
195
<td></td><td></td><td><code> [inline]</code></td>
201
<p>Computes if there is any bit in OR operation of two bitsets. </p>
202
<dl><dt><b>Parameters:</b></dt><dd>
203
<table border="0" cellspacing="2" cellpadding="0">
204
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
205
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
209
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
211
<p>Definition at line <a class="el" href="a00089_source.html#l01061">1061</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
213
<p>References <a class="el" href="a00089_source.html#l00057">bm::COUNT_OR</a>, <a class="el" href="a00089_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
217
<a class="anchor" id="gabde2e210b9b1edd190e1f5a9ff22344c"></a><!-- doxytag: member="bm::any_sub" ref="gabde2e210b9b1edd190e1f5a9ff22344c" args="(const BV &bv1, const BV &bv2)" -->
218
<div class="memitem">
219
<div class="memproto">
220
<div class="memtemplate">
221
template<class BV > </div>
222
<table class="memname">
224
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_sub </td>
226
<td class="paramtype">const BV & </td>
227
<td class="paramname"> <em>bv1</em>, </td>
230
<td class="paramkey"></td>
232
<td class="paramtype">const BV & </td>
233
<td class="paramname"> <em>bv2</em></td><td> </td>
238
<td></td><td></td><td><code> [inline]</code></td>
244
<p>Computes if there is any bit in SUB operation of two bitsets. </p>
245
<dl><dt><b>Parameters:</b></dt><dd>
246
<table border="0" cellspacing="2" cellpadding="0">
247
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
248
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
252
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
254
<p>Definition at line <a class="el" href="a00089_source.html#l01028">1028</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
256
<p>References <a class="el" href="a00089_source.html#l00058">bm::COUNT_SUB_AB</a>, <a class="el" href="a00089_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
260
<a class="anchor" id="ga2d63f41244b82d233acb53d88b326b82"></a><!-- doxytag: member="bm::any_xor" ref="ga2d63f41244b82d233acb53d88b326b82" args="(const BV &bv1, const BV &bv2)" -->
261
<div class="memitem">
262
<div class="memproto">
263
<div class="memtemplate">
264
template<class BV > </div>
265
<table class="memname">
267
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_xor </td>
269
<td class="paramtype">const BV & </td>
270
<td class="paramname"> <em>bv1</em>, </td>
273
<td class="paramkey"></td>
275
<td class="paramtype">const BV & </td>
276
<td class="paramname"> <em>bv2</em></td><td> </td>
281
<td></td><td></td><td><code> [inline]</code></td>
287
<p>Computes if there is any bit in XOR operation of two bitsets. </p>
288
<dl><dt><b>Parameters:</b></dt><dd>
289
<table border="0" cellspacing="2" cellpadding="0">
290
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
291
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
295
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
297
<p>Definition at line <a class="el" href="a00089_source.html#l00993">993</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
299
<p>References <a class="el" href="a00089_source.html#l00056">bm::COUNT_XOR</a>, <a class="el" href="a00089_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
303
<a class="anchor" id="gae451cb4b87e8c0859b0614d2ffb99737"></a><!-- doxytag: member="bm::count_and" ref="gae451cb4b87e8c0859b0614d2ffb99737" args="(const BV &bv1, const BV &bv2)" -->
304
<div class="memitem">
305
<div class="memproto">
306
<div class="memtemplate">
307
template<class BV > </div>
308
<table class="memname">
310
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_and </td>
312
<td class="paramtype">const BV & </td>
313
<td class="paramname"> <em>bv1</em>, </td>
316
<td class="paramkey"></td>
318
<td class="paramtype">const BV & </td>
319
<td class="paramname"> <em>bv2</em></td><td> </td>
324
<td></td><td></td><td><code> [inline]</code></td>
330
<p>Computes bitcount of AND operation of two bitsets. </p>
331
<dl><dt><b>Parameters:</b></dt><dd>
332
<table border="0" cellspacing="2" cellpadding="0">
333
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
334
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
338
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
339
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a3">sample9.cpp</a>.</dd>
341
<p>Definition at line <a class="el" href="a00089_source.html#l00943">943</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
343
<p>References <a class="el" href="a00089_source.html#l00055">bm::COUNT_AND</a>, <a class="el" href="a00089_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
345
<p>Referenced by <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
349
<a class="anchor" id="ga803c564668703fc3bf80067570c2c905"></a><!-- doxytag: member="bm::count_or" ref="ga803c564668703fc3bf80067570c2c905" args="(const BV &bv1, const BV &bv2)" -->
350
<div class="memitem">
351
<div class="memproto">
352
<div class="memtemplate">
353
template<class BV > </div>
354
<table class="memname">
356
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_or </td>
358
<td class="paramtype">const BV & </td>
359
<td class="paramname"> <em>bv1</em>, </td>
362
<td class="paramkey"></td>
364
<td class="paramtype">const BV & </td>
365
<td class="paramname"> <em>bv2</em></td><td> </td>
370
<td></td><td></td><td><code> [inline]</code></td>
376
<p>Computes bitcount of OR operation of two bitsets. </p>
377
<dl><dt><b>Parameters:</b></dt><dd>
378
<table border="0" cellspacing="2" cellpadding="0">
379
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
380
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
384
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
386
<p>Definition at line <a class="el" href="a00089_source.html#l01045">1045</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
388
<p>References <a class="el" href="a00089_source.html#l00057">bm::COUNT_OR</a>, <a class="el" href="a00089_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
390
<p>Referenced by <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>.</p>
394
<a class="anchor" id="ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><!-- doxytag: member="bm::count_sub" ref="ga902d8c1cd1f8a2538cd47d47f5d8d605" args="(const BV &bv1, const BV &bv2)" -->
395
<div class="memitem">
396
<div class="memproto">
397
<div class="memtemplate">
398
template<class BV > </div>
399
<table class="memname">
401
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_sub </td>
403
<td class="paramtype">const BV & </td>
404
<td class="paramname"> <em>bv1</em>, </td>
407
<td class="paramkey"></td>
409
<td class="paramtype">const BV & </td>
410
<td class="paramname"> <em>bv2</em></td><td> </td>
415
<td></td><td></td><td><code> [inline]</code></td>
421
<p>Computes bitcount of SUB operation of two bitsets. </p>
422
<dl><dt><b>Parameters:</b></dt><dd>
423
<table border="0" cellspacing="2" cellpadding="0">
424
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
425
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
429
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
431
<p>Definition at line <a class="el" href="a00089_source.html#l01011">1011</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
433
<p>References <a class="el" href="a00089_source.html#l00058">bm::COUNT_SUB_AB</a>, <a class="el" href="a00089_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
437
<a class="anchor" id="gafc64a082dcaee07f70f7faf3e24f844e"></a><!-- doxytag: member="bm::count_xor" ref="gafc64a082dcaee07f70f7faf3e24f844e" args="(const BV &bv1, const BV &bv2)" -->
438
<div class="memitem">
439
<div class="memproto">
440
<div class="memtemplate">
441
template<class BV > </div>
442
<table class="memname">
444
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_xor </td>
446
<td class="paramtype">const BV & </td>
447
<td class="paramname"> <em>bv1</em>, </td>
450
<td class="paramkey"></td>
452
<td class="paramtype">const BV & </td>
453
<td class="paramname"> <em>bv2</em></td><td> </td>
458
<td></td><td></td><td><code> [inline]</code></td>
464
<p>Computes bitcount of XOR operation of two bitsets. </p>
465
<dl><dt><b>Parameters:</b></dt><dd>
466
<table border="0" cellspacing="2" cellpadding="0">
467
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- Argument bit-vector. </td></tr>
468
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
472
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
473
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a2">sample9.cpp</a>.</dd>
475
<p>Definition at line <a class="el" href="a00089_source.html#l00977">977</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
477
<p>References <a class="el" href="a00089_source.html#l00056">bm::COUNT_XOR</a>, <a class="el" href="a00089_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
479
<p>Referenced by <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, and <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
483
<a class="anchor" id="ga815fef76f02576ab9ab58de0a45d8a4b"></a><!-- doxytag: member="bm::distance_operation" ref="ga815fef76f02576ab9ab58de0a45d8a4b" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
484
<div class="memitem">
485
<div class="memproto">
486
<div class="memtemplate">
487
template<class BV > </div>
488
<table class="memname">
490
<td class="memname">void bm::distance_operation </td>
492
<td class="paramtype">const BV & </td>
493
<td class="paramname"> <em>bv1</em>, </td>
496
<td class="paramkey"></td>
498
<td class="paramtype">const BV & </td>
499
<td class="paramname"> <em>bv2</em>, </td>
502
<td class="paramkey"></td>
504
<td class="paramtype">distance_metric_descriptor * </td>
505
<td class="paramname"> <em>dmit</em>, </td>
508
<td class="paramkey"></td>
510
<td class="paramtype">distance_metric_descriptor * </td>
511
<td class="paramname"> <em>dmit_end</em></td><td> </td>
516
<td></td><td></td><td><code> [inline]</code></td>
522
<p>Distance computing template function. </p>
523
<p>Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes all metrics saves result into corresponding pipeline results (<a class="el" href="a00061.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
524
<dl><dt><b>Parameters:</b></dt><dd>
525
<table border="0" cellspacing="2" cellpadding="0">
526
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- argument bitvector 1 (A) </td></tr>
527
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
528
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
529
<tr><td valign="top"></td><td valign="top"><em>dmit_end</em> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
533
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a10">sample9.cpp</a>.</dd>
535
<p>Definition at line <a class="el" href="a00089_source.html#l00688">688</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
537
<p>References <a class="el" href="a00092_source.html#l00097">BM_IS_GAP</a>, <a class="el" href="a00092_source.html#l00139">BM_SET_MMX_GUARD</a>, <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00642">bm::distance_stage()</a>, and <a class="el" href="a00091_source.html#l00080">bm::set_array_size</a>.</p>
539
<p>Referenced by <a class="el" href="a00089_source.html#l00943">bm::count_and()</a>, <a class="el" href="a00089_source.html#l01045">bm::count_or()</a>, <a class="el" href="a00089_source.html#l01011">bm::count_sub()</a>, <a class="el" href="a00089_source.html#l00977">bm::count_xor()</a>, and <a class="el" href="a00114_source.html#l00047">main()</a>.</p>
543
<a class="anchor" id="gaa66525fd7a3f823d73678252a235982e"></a><!-- doxytag: member="bm::distance_operation_any" ref="gaa66525fd7a3f823d73678252a235982e" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
544
<div class="memitem">
545
<div class="memproto">
546
<div class="memtemplate">
547
template<class BV > </div>
548
<table class="memname">
550
<td class="memname">void bm::distance_operation_any </td>
552
<td class="paramtype">const BV & </td>
553
<td class="paramname"> <em>bv1</em>, </td>
556
<td class="paramkey"></td>
558
<td class="paramtype">const BV & </td>
559
<td class="paramname"> <em>bv2</em>, </td>
562
<td class="paramkey"></td>
564
<td class="paramtype">distance_metric_descriptor * </td>
565
<td class="paramname"> <em>dmit</em>, </td>
568
<td class="paramkey"></td>
570
<td class="paramtype">distance_metric_descriptor * </td>
571
<td class="paramname"> <em>dmit_end</em></td><td> </td>
576
<td></td><td></td><td><code> [inline]</code></td>
582
<p>Distance screening template function. </p>
583
<p>Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes possybility of a metric(any bit) saves result into corresponding pipeline results (<a class="el" href="a00061.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
584
<dl><dt><b>Parameters:</b></dt><dd>
585
<table border="0" cellspacing="2" cellpadding="0">
586
<tr><td valign="top"></td><td valign="top"><em>bv1</em> </td><td>- argument bitvector 1 (A) </td></tr>
587
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
588
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
589
<tr><td valign="top"></td><td valign="top"><em>dmit_end</em> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
594
<p>Definition at line <a class="el" href="a00089_source.html#l00807">807</a> of file <a class="el" href="a00089_source.html">bmalgo_impl.h</a>.</p>
596
<p>References <a class="el" href="a00092_source.html#l00097">BM_IS_GAP</a>, <a class="el" href="a00092_source.html#l00139">BM_SET_MMX_GUARD</a>, <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00642">bm::distance_stage()</a>, <a class="el" href="a00089_source.html#l00086">bm::distance_metric_descriptor::result</a>, and <a class="el" href="a00091_source.html#l00080">bm::set_array_size</a>.</p>
598
<p>Referenced by <a class="el" href="a00089_source.html#l00959">bm::any_and()</a>, <a class="el" href="a00089_source.html#l01061">bm::any_or()</a>, <a class="el" href="a00089_source.html#l01028">bm::any_sub()</a>, and <a class="el" href="a00089_source.html#l00993">bm::any_xor()</a>.</p>
602
<a class="anchor" id="ga158946ea41ca66c3e1bca62c92684788"></a><!-- doxytag: member="bm::operation2metric" ref="ga158946ea41ca66c3e1bca62c92684788" args="(set_operation op)" -->
603
<div class="memitem">
604
<div class="memproto">
605
<table class="memname">
607
<td class="memname">distance_metric bm::operation2metric </td>
609
<td class="paramtype">set_operation </td>
610
<td class="paramname"> <em>op</em></td>
67
<a class="anchor" id="ga819bdab57a624a08456ea79161b9c5d2"></a><!-- doxytag: member="bm::combine_and" ref="ga819bdab57a624a08456ea79161b9c5d2" args="(BV &bv, It first, It last)" -->
69
<div class="memproto">
70
<div class="memtemplate">
71
template<class BV , class It > </div>
72
<table class="memname">
74
<td class="memname">void bm::combine_and </td>
76
<td class="paramtype">BV & </td>
77
<td class="paramname"> <em>bv</em>, </td>
80
<td class="paramkey"></td>
82
<td class="paramtype">It </td>
83
<td class="paramname"> <em>first</em>, </td>
86
<td class="paramkey"></td>
88
<td class="paramtype">It </td>
89
<td class="paramname"> <em>last</em></td><td> </td>
94
<td></td><td></td><td><code> [inline]</code></td>
100
<p>AND Combine bitvector and the iterable sequence. </p>
101
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
102
<dl><dt><b>Parameters:</b></dt><dd>
103
<table border="0" cellspacing="2" cellpadding="0">
104
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
105
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
106
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence</td></tr>
110
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00125.html#ga22922f71bd1eec8a5b663dc77b90cf6c" title="AND Combine bitvector and the iterable sequence.">combine_and_sorted</a> </dd></dl>
112
<p>Definition at line <a class="el" href="a00090_source.html#l01382">1382</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
114
<p>References <a class="el" href="a00090_source.html#l01105">bm::combine_or()</a>.</p>
118
<a class="anchor" id="ga22922f71bd1eec8a5b663dc77b90cf6c"></a><!-- doxytag: member="bm::combine_and_sorted" ref="ga22922f71bd1eec8a5b663dc77b90cf6c" args="(BV &bv, It first, It last)" -->
119
<div class="memitem">
120
<div class="memproto">
121
<div class="memtemplate">
122
template<class BV , class It > </div>
123
<table class="memname">
125
<td class="memname">void bm::combine_and_sorted </td>
127
<td class="paramtype">BV & </td>
128
<td class="paramname"> <em>bv</em>, </td>
131
<td class="paramkey"></td>
133
<td class="paramtype">It </td>
134
<td class="paramname"> <em>first</em>, </td>
137
<td class="paramkey"></td>
139
<td class="paramtype">It </td>
140
<td class="paramname"> <em>last</em></td><td> </td>
145
<td></td><td></td><td><code> [inline]</code></td>
151
<p>AND Combine bitvector and the iterable sequence. </p>
152
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sorted sequence of integers (represents another set).</p>
153
<dl><dt><b>Parameters:</b></dt><dd>
154
<table border="0" cellspacing="2" cellpadding="0">
155
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
156
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
157
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
162
<p>Definition at line <a class="el" href="a00090_source.html#l01350">1350</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
164
<p>References <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>.</p>
168
<a class="anchor" id="ga54ff78528c99ae3ca443eb99ba44785b"></a><!-- doxytag: member="bm::combine_or" ref="ga54ff78528c99ae3ca443eb99ba44785b" args="(BV &bv, It first, It last)" -->
169
<div class="memitem">
170
<div class="memproto">
171
<div class="memtemplate">
172
template<class BV , class It > </div>
173
<table class="memname">
175
<td class="memname">void bm::combine_or </td>
177
<td class="paramtype">BV & </td>
178
<td class="paramname"> <em>bv</em>, </td>
181
<td class="paramkey"></td>
183
<td class="paramtype">It </td>
184
<td class="paramname"> <em>first</em>, </td>
187
<td class="paramkey"></td>
189
<td class="paramtype">It </td>
190
<td class="paramname"> <em>last</em></td><td> </td>
195
<td></td><td></td><td><code> [inline]</code></td>
201
<p>OR Combine bitvector and the iterable sequence. </p>
202
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
203
<dl><dt><b>Parameters:</b></dt><dd>
204
<table border="0" cellspacing="2" cellpadding="0">
205
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
206
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
207
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
212
<p>Definition at line <a class="el" href="a00090_source.html#l01105">1105</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
214
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
216
<p>Referenced by <a class="el" href="a00090_source.html#l01382">bm::combine_and()</a>.</p>
220
<a class="anchor" id="gab88c5bf51484323e0139aa789d7f0b98"></a><!-- doxytag: member="bm::combine_sub" ref="gab88c5bf51484323e0139aa789d7f0b98" args="(BV &bv, It first, It last)" -->
221
<div class="memitem">
222
<div class="memproto">
223
<div class="memtemplate">
224
template<class BV , class It > </div>
225
<table class="memname">
227
<td class="memname">void bm::combine_sub </td>
229
<td class="paramtype">BV & </td>
230
<td class="paramname"> <em>bv</em>, </td>
233
<td class="paramkey"></td>
235
<td class="paramtype">It </td>
236
<td class="paramname"> <em>first</em>, </td>
239
<td class="paramkey"></td>
241
<td class="paramtype">It </td>
242
<td class="paramname"> <em>last</em></td><td> </td>
247
<td></td><td></td><td><code> [inline]</code></td>
253
<p>SUB Combine bitvector and the iterable sequence. </p>
254
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
255
<dl><dt><b>Parameters:</b></dt><dd>
256
<table border="0" cellspacing="2" cellpadding="0">
257
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
258
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
259
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
264
<p>Definition at line <a class="el" href="a00090_source.html#l01268">1268</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
266
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00094_source.html#l00489">bm::gap_test()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
270
<a class="anchor" id="ga3cb362aee03de6a321495100ae5c8375"></a><!-- doxytag: member="bm::combine_xor" ref="ga3cb362aee03de6a321495100ae5c8375" args="(BV &bv, It first, It last)" -->
271
<div class="memitem">
272
<div class="memproto">
273
<div class="memtemplate">
274
template<class BV , class It > </div>
275
<table class="memname">
277
<td class="memname">void bm::combine_xor </td>
279
<td class="paramtype">BV & </td>
280
<td class="paramname"> <em>bv</em>, </td>
283
<td class="paramkey"></td>
285
<td class="paramtype">It </td>
286
<td class="paramname"> <em>first</em>, </td>
289
<td class="paramkey"></td>
291
<td class="paramtype">It </td>
292
<td class="paramname"> <em>last</em></td><td> </td>
297
<td></td><td></td><td><code> [inline]</code></td>
303
<p>XOR Combine bitvector and the iterable sequence. </p>
304
<p>Algorithm combines <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
305
<dl><dt><b>Parameters:</b></dt><dd>
306
<table border="0" cellspacing="2" cellpadding="0">
307
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
308
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
309
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
314
<p>Definition at line <a class="el" href="a00090_source.html#l01184">1184</a> of file <a class="el" href="a00090_source.html">bmalgo_impl.h</a>.</p>
316
<p>References <a class="el" href="a00090_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00093_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00095">BMGAP_PTR</a>, <a class="el" href="a00094_source.html#l02362">bm::gap_limit()</a>, <a class="el" href="a00094_source.html#l01133">bm::gap_set_value()</a>, <a class="el" href="a00094_source.html#l00489">bm::gap_test()</a>, <a class="el" href="a00092_source.html#l00048">bm::id_max</a>, <a class="el" href="a00092_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00092_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00092_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00092_source.html#l00062">bm::set_word_shift</a>.</p>
320
<a class="anchor" id="gac7a59d3bc266310ec127cb3efadb0d33"></a><!-- doxytag: member="bm::count_intervals" ref="gac7a59d3bc266310ec127cb3efadb0d33" args="(const BV &bv)" -->
321
<div class="memitem">
322
<div class="memproto">
323
<div class="memtemplate">
324
template<class BV > </div>
325
<table class="memname">
327
<td class="memname"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_intervals </td>
329
<td class="paramtype">const BV & </td>
330
<td class="paramname"> <em>bv</em></td>
611
331
<td> ) </td>
612
332
<td><code> [inline]</code></td>