139
139
</ table > < table class ="memberdecls ">
140
140
< tr class ="heading "> < td colspan ="2 "> < h2 id ="header-func-members " class ="groupheader "> < a id ="func-members " name ="func-members "> </ a >
141
141
Functions</ h2 > </ td > </ tr >
142
- < tr class ="memitem:adae5ede93421c239b4a15a3689320ac1 " id ="r_adae5ede93421c239b4a15a3689320ac1 "> < td class ="memItemLeft " align ="right " valign ="top "> < a id ="adae5ede93421c239b4a15a3689320ac1 " name ="adae5ede93421c239b4a15a3689320ac1 "> </ a >
143
- std::vector< int64_t > </ td > < td class ="memItemRight " valign ="bottom "> < b > range_queries::prefix_sum_array::PSA</ b > (1, 0)</ td > </ tr >
144
- < tr class ="memitem:ab36151479ad37d53ef9fcb60a274b1d9 " id ="r_ab36151479ad37d53ef9fcb60a274b1d9 "> < td class ="memItemLeft " align ="right " valign ="top "> void </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#ab36151479ad37d53ef9fcb60a274b1d9 "> range_queries::prefix_sum_array::build</ a > (std::vector< int64_t > original_array)</ td > </ tr >
145
- < tr class ="memdesc:ab36151479ad37d53ef9fcb60a274b1d9 "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> function that builds the PSA < br /> </ td > </ tr >
142
+ < tr class ="memitem:a98e118ed64ba95a8198e1a915459c177 " id ="r_a98e118ed64ba95a8198e1a915459c177 "> < td class ="memItemLeft " align ="right " valign ="top "> void </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#a98e118ed64ba95a8198e1a915459c177 "> range_queries::prefix_sum_array::build</ a > (const std::vector< int64_t > &original_array)</ td > </ tr >
143
+ < tr class ="memdesc:a98e118ed64ba95a8198e1a915459c177 "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> function that builds the PSA < br /> </ td > </ tr >
146
144
< tr class ="memitem:a7c8fd967c36dbba5fdf9c71faed604cf " id ="r_a7c8fd967c36dbba5fdf9c71faed604cf "> < td class ="memItemLeft " align ="right " valign ="top "> int64_t </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (int64_t beg, int64_t end)</ td > </ tr >
147
145
< tr class ="memdesc:a7c8fd967c36dbba5fdf9c71faed604cf "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> query function < br /> </ td > </ tr >
148
146
< tr class ="memitem:aa8dca7b867074164d5f45b0f3851269d " id ="r_aa8dca7b867074164d5f45b0f3851269d "> < td class ="memItemLeft " align ="right " valign ="top "> static void </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#aa8dca7b867074164d5f45b0f3851269d "> test</ a > ()</ td > </ tr >
149
147
< tr class ="memdesc:aa8dca7b867074164d5f45b0f3851269d "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> Self-test implementations. < br /> </ td > </ tr >
150
148
< tr class ="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4 " id ="r_ae66f6b31b5ad750f1fe042a706a4e3d4 "> < td class ="memItemLeft " align ="right " valign ="top "> int </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#ae66f6b31b5ad750f1fe042a706a4e3d4 "> main</ a > ()</ td > </ tr >
151
149
< tr class ="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4 "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> Main function. < br /> </ td > </ tr >
150
+ </ table > < table class ="memberdecls ">
151
+ < tr class ="heading "> < td colspan ="2 "> < h2 id ="header-var-members " class ="groupheader "> < a id ="var-members " name ="var-members "> </ a >
152
+ Variables</ h2 > </ td > </ tr >
153
+ < tr class ="memitem:a4051fe9652babad269ce08239eb493f1 " id ="r_a4051fe9652babad269ce08239eb493f1 "> < td class ="memItemLeft " align ="right " valign ="top "> std::vector< int64_t > </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="#a4051fe9652babad269ce08239eb493f1 "> range_queries::prefix_sum_array::PSA</ a > {}</ td > </ tr >
152
154
</ table >
153
155
< a name ="details " id ="details "> </ a > < h2 id ="header-details " class ="groupheader "> Detailed Description</ h2 >
154
156
< div class ="textblock "> < p > < a href ="https://en.wikipedia.org/wiki/Prefix_sum " target ="_blank "> Prefix Sum Array</ a > data structure implementation. </ p >
165
167
166
168
< p class ="definition "> Definition in file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
167
169
</ div > < a name ="doc-func-members " id ="doc-func-members "> </ a > < h2 id ="header-doc-func-members " class ="groupheader "> Function Documentation</ h2 >
168
- < a id ="ab36151479ad37d53ef9fcb60a274b1d9 " name ="ab36151479ad37d53ef9fcb60a274b1d9 "> </ a >
169
- < h2 class ="memtitle "> < span class ="permalink "> < a href ="#ab36151479ad37d53ef9fcb60a274b1d9 "> ◆ </ a > </ span > build()</ h2 >
170
+ < a id ="a98e118ed64ba95a8198e1a915459c177 " name ="a98e118ed64ba95a8198e1a915459c177 "> </ a >
171
+ < h2 class ="memtitle "> < span class ="permalink "> < a href ="#a98e118ed64ba95a8198e1a915459c177 "> ◆ </ a > </ span > build()</ h2 >
170
172
171
173
< div class ="memitem ">
172
174
< div class ="memproto ">
173
175
< table class ="memname ">
174
176
< tr >
175
177
< td class ="memname "> void range_queries::prefix_sum_array::build </ td >
176
178
< td > (</ td >
177
- < td class ="paramtype "> std::vector< int64_t ></ td > < td class ="paramname "> < span class ="paramname "> < em > original_array</ em > </ span > </ td > < td > )</ td >
179
+ < td class ="paramtype "> const std::vector< int64_t > & ;</ td > < td class ="paramname "> < span class ="paramname "> < em > original_array</ em > </ span > </ td > < td > )</ td >
178
180
< td > </ td >
179
181
</ tr >
180
182
</ table >
@@ -190,11 +192,13 @@ <h2 class="memtitle"><span class="permalink"><a href="#ab36151479ad37d53ef9fcb60
190
192
< dl class ="section return "> < dt > Returns</ dt > < dd > void </ dd > </ dl >
191
193
192
194
< p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00041 "> 41</ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
193
- < div class ="fragment "> < div class ="line "> < span class ="lineno "> 41</ span > {</ div >
194
- < div class ="line "> < span class ="lineno "> 42</ span > < span class ="keywordflow "> for</ span > (< span class ="keywordtype "> int</ span > i = 1; i <= static_cast<int>(original_array.size()); i++) {</ div >
195
- < div class ="line "> < span class ="lineno "> 43</ span > PSA.push_back(PSA[i - 1] + original_array[i]);</ div >
196
- < div class ="line "> < span class ="lineno "> 44</ span > }</ div >
197
- < div class ="line "> < span class ="lineno "> 45</ span > }</ div >
195
+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 41</ span > {</ div >
196
+ < div class ="line "> < span class ="lineno "> 42</ span > PSA.clear();</ div >
197
+ < div class ="line "> < span class ="lineno "> 43</ span > PSA.push_back(0);</ div >
198
+ < div class ="line "> < span class ="lineno "> 44</ span > < span class ="keywordflow "> for</ span > (std::size_t i = 1; i < original_array.size(); ++i) {</ div >
199
+ < div class ="line "> < span class ="lineno "> 45</ span > PSA.push_back(PSA.back() + original_array[i]);</ div >
200
+ < div class ="line "> < span class ="lineno "> 46</ span > }</ div >
201
+ < div class ="line "> < span class ="lineno "> 47</ span > }</ div >
198
202
</ div > <!-- fragment -->
199
203
</ div >
200
204
</ div >
@@ -216,12 +220,12 @@ <h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a7
216
220
< p > Main function. </ p >
217
221
< dl class ="section return "> < dt > Returns</ dt > < dd > 0 on exit </ dd > </ dl >
218
222
219
- < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00080 " > 80 </ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
220
- < div class ="fragment "> < div class ="line "> < span class ="lineno "> 80 </ span > {</ div >
221
- < div class ="line "> < span class ="lineno "> 81 </ span > < a class ="code hl_function " href ="#aa8dca7b867074164d5f45b0f3851269d "> test</ a > (); < span class ="comment "> // run self-test implementations</ span > </ div >
222
- < div class ="line "> < span class ="lineno "> 82 </ span > < span class ="keywordflow "> return</ span > 0;</ div >
223
- < div class ="line "> < span class ="lineno "> 83 </ span > }</ div >
224
- < div class ="ttc " id ="aprefix__sum__array_8cpp_html_aa8dca7b867074164d5f45b0f3851269d "> < div class ="ttname "> < a href ="#aa8dca7b867074164d5f45b0f3851269d "> test</ a > </ div > < div class ="ttdeci "> static void test()</ div > < div class ="ttdoc "> Self-test implementations.</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00061 "> prefix_sum_array.cpp:61 </ a > </ div > </ div >
223
+ < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00082 " > 82 </ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
224
+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 82 </ span > {</ div >
225
+ < div class ="line "> < span class ="lineno "> 83 </ span > < a class ="code hl_function " href ="#aa8dca7b867074164d5f45b0f3851269d "> test</ a > (); < span class ="comment "> // run self-test implementations</ span > </ div >
226
+ < div class ="line "> < span class ="lineno "> 84 </ span > < span class ="keywordflow "> return</ span > 0;</ div >
227
+ < div class ="line "> < span class ="lineno "> 85 </ span > }</ div >
228
+ < div class ="ttc " id ="aprefix__sum__array_8cpp_html_aa8dca7b867074164d5f45b0f3851269d "> < div class ="ttname "> < a href ="#aa8dca7b867074164d5f45b0f3851269d "> test</ a > </ div > < div class ="ttdeci "> static void test()</ div > < div class ="ttdoc "> Self-test implementations.</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00063 "> prefix_sum_array.cpp:63 </ a > </ div > </ div >
225
229
</ div > <!-- fragment -->
226
230
</ div >
227
231
</ div >
@@ -254,8 +258,8 @@ <h2 class="memtitle"><span class="permalink"><a href="#a7c8fd967c36dbba5fdf9c71f
254
258
</ dl >
255
259
< dl class ="section return "> < dt > Returns</ dt > < dd > sum of the range [beg, end] </ dd > </ dl >
256
260
257
- < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00052 " > 52 </ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
258
- < div class ="fragment "> < div class ="line "> < span class ="lineno "> 52 </ span > { < span class ="keywordflow "> return</ span > PSA[end] - PSA[beg - 1]; }</ div >
261
+ < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00054 " > 54 </ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
262
+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 54 </ span > { < span class ="keywordflow "> return</ span > PSA[end] - PSA[beg - 1]; }</ div >
259
263
</ div > <!-- fragment -->
260
264
</ div >
261
265
</ div >
@@ -285,23 +289,41 @@ <h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f
285
289
< p > Self-test implementations. </ p >
286
290
< dl class ="section return "> < dt > Returns</ dt > < dd > void </ dd > </ dl >
287
291
288
- < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00061 "> 61</ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
289
- < div class ="fragment "> < div class ="line "> < span class ="lineno "> 61</ span > {</ div >
290
- < div class ="line "> < span class ="lineno "> 62</ span > std::vector<int64_t> values{0, 123, 0, 2, -2, 5,</ div >
291
- < div class ="line "> < span class ="lineno "> 63</ span > 24, 0, 23, -1, -1}; < span class ="comment "> // original array</ span > </ div >
292
- < div class ="line "> < span class ="lineno "> 64</ span > </ div >
293
- < div class ="line "> < span class ="lineno "> 65</ span > < a class ="code hl_function " href ="#ab36151479ad37d53ef9fcb60a274b1d9 "> range_queries::prefix_sum_array::build</ a > (values);</ div >
294
- < div class ="line "> < span class ="lineno "> 66</ span > < span class ="comment "> // queries are of the type: sum of the range [a, b] = psa[b] - psa[a-1]</ span > </ div >
295
- < div class ="line "> < span class ="lineno "> 67</ span > </ div >
296
- < div class ="line "> < span class ="lineno "> 68</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (1, 10) ==</ div >
297
- < div class ="line "> < span class ="lineno "> 69</ span > 173); < span class ="comment "> // sum of the entire array</ span > </ div >
298
- < div class ="line "> < span class ="lineno "> 70</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (4, 6) ==</ div >
299
- < div class ="line "> < span class ="lineno "> 71</ span > 27); < span class ="comment "> // the sum of the interval [4, 6]</ span > </ div >
300
- < div class ="line "> < span class ="lineno "> 72</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (5, 9) ==</ div >
301
- < div class ="line "> < span class ="lineno "> 73</ span > 51); < span class ="comment "> // the sum of the interval [5, 9]</ span > </ div >
302
- < div class ="line "> < span class ="lineno "> 74</ span > }</ div >
303
- < div class ="ttc " id ="aprefix__sum__array_8cpp_html_a7c8fd967c36dbba5fdf9c71faed604cf "> < div class ="ttname "> < a href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > </ div > < div class ="ttdeci "> int64_t query(int64_t beg, int64_t end)</ div > < div class ="ttdoc "> query function</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00052 "> prefix_sum_array.cpp:52</ a > </ div > </ div >
304
- < div class ="ttc " id ="aprefix__sum__array_8cpp_html_ab36151479ad37d53ef9fcb60a274b1d9 "> < div class ="ttname "> < a href ="#ab36151479ad37d53ef9fcb60a274b1d9 "> range_queries::prefix_sum_array::build</ a > </ div > < div class ="ttdeci "> void build(std::vector< int64_t > original_array)</ div > < div class ="ttdoc "> function that builds the PSA</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00041 "> prefix_sum_array.cpp:41</ a > </ div > </ div >
292
+ < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00063 "> 63</ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
293
+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 63</ span > {</ div >
294
+ < div class ="line "> < span class ="lineno "> 64</ span > std::vector<int64_t> values{0, 123, 0, 2, -2, 5,</ div >
295
+ < div class ="line "> < span class ="lineno "> 65</ span > 24, 0, 23, -1, -1}; < span class ="comment "> // original array</ span > </ div >
296
+ < div class ="line "> < span class ="lineno "> 66</ span > </ div >
297
+ < div class ="line "> < span class ="lineno "> 67</ span > < a class ="code hl_function " href ="#a98e118ed64ba95a8198e1a915459c177 "> range_queries::prefix_sum_array::build</ a > (values);</ div >
298
+ < div class ="line "> < span class ="lineno "> 68</ span > < span class ="comment "> // queries are of the type: sum of the range [a, b] = psa[b] - psa[a-1]</ span > </ div >
299
+ < div class ="line "> < span class ="lineno "> 69</ span > </ div >
300
+ < div class ="line "> < span class ="lineno "> 70</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (1, 10) ==</ div >
301
+ < div class ="line "> < span class ="lineno "> 71</ span > 173); < span class ="comment "> // sum of the entire array</ span > </ div >
302
+ < div class ="line "> < span class ="lineno "> 72</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (4, 6) ==</ div >
303
+ < div class ="line "> < span class ="lineno "> 73</ span > 27); < span class ="comment "> // the sum of the interval [4, 6]</ span > </ div >
304
+ < div class ="line "> < span class ="lineno "> 74</ span > assert(< a class ="code hl_function " href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > (5, 9) ==</ div >
305
+ < div class ="line "> < span class ="lineno "> 75</ span > 51); < span class ="comment "> // the sum of the interval [5, 9]</ span > </ div >
306
+ < div class ="line "> < span class ="lineno "> 76</ span > }</ div >
307
+ < div class ="ttc " id ="aprefix__sum__array_8cpp_html_a7c8fd967c36dbba5fdf9c71faed604cf "> < div class ="ttname "> < a href ="#a7c8fd967c36dbba5fdf9c71faed604cf "> range_queries::prefix_sum_array::query</ a > </ div > < div class ="ttdeci "> int64_t query(int64_t beg, int64_t end)</ div > < div class ="ttdoc "> query function</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00054 "> prefix_sum_array.cpp:54</ a > </ div > </ div >
308
+ < div class ="ttc " id ="aprefix__sum__array_8cpp_html_a98e118ed64ba95a8198e1a915459c177 "> < div class ="ttname "> < a href ="#a98e118ed64ba95a8198e1a915459c177 "> range_queries::prefix_sum_array::build</ a > </ div > < div class ="ttdeci "> void build(const std::vector< int64_t > &original_array)</ div > < div class ="ttdoc "> function that builds the PSA</ div > < div class ="ttdef "> < b > Definition</ b > < a href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00041 "> prefix_sum_array.cpp:41</ a > </ div > </ div >
309
+ </ div > <!-- fragment -->
310
+ </ div >
311
+ </ div >
312
+ < a name ="doc-var-members " id ="doc-var-members "> </ a > < h2 id ="header-doc-var-members " class ="groupheader "> Variable Documentation</ h2 >
313
+ < a id ="a4051fe9652babad269ce08239eb493f1 " name ="a4051fe9652babad269ce08239eb493f1 "> </ a >
314
+ < h2 class ="memtitle "> < span class ="permalink "> < a href ="#a4051fe9652babad269ce08239eb493f1 "> ◆ </ a > </ span > PSA</ h2 >
315
+
316
+ < div class ="memitem ">
317
+ < div class ="memproto ">
318
+ < table class ="memname ">
319
+ < tr >
320
+ < td class ="memname "> std::vector<int64_t> range_queries::prefix_sum_array::PSA {}</ td >
321
+ </ tr >
322
+ </ table >
323
+ </ div > < div class ="memdoc ">
324
+
325
+ < p class ="definition "> Definition at line < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html#l00034 "> 34</ a > of file < a class ="el " href ="../../d1/d9e/prefix__sum__array_8cpp_source.html "> prefix_sum_array.cpp</ a > .</ p >
326
+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 34</ span > {};</ div >
305
327
</ div > <!-- fragment -->
306
328
</ div >
307
329
</ div >
0 commit comments