mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-04-29 13:03:58 +08:00
Documentation for f1eddf4d65
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<meta name="generator" content="Doxygen 1.14.0"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>TheAlgorithms/C++: range_queries::perSegTree Class Reference</title>
|
||||
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
||||
@@ -19,7 +19,6 @@
|
||||
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../navtreedata.js"></script>
|
||||
<script type="text/javascript" src="../../navtree.js"></script>
|
||||
<script type="text/javascript" src="../../resize.js"></script>
|
||||
<script type="text/javascript" src="../../cookie.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
@@ -60,26 +59,20 @@ window.MathJax = {
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<!-- Generated by Doxygen 1.14.0 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() { codefold.init(1); });
|
||||
/* @license-end */
|
||||
$(function() { codefold.init(); });
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search',true);
|
||||
$(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
@@ -94,10 +87,9 @@ $(function() {
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function(){initNavTree('d8/d28/classrange__queries_1_1per_seg_tree.html','../../'); initResizable(true); });
|
||||
/* @license-end */
|
||||
$(function(){initNavTree('d8/d28/classrange__queries_1_1per_seg_tree.html','../../','da/d66/classrange__queries_1_1per_seg_tree-members'); });
|
||||
</script>
|
||||
<div id="container">
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
@@ -121,12 +113,6 @@ $(function(){initNavTree('d8/d28/classrange__queries_1_1per_seg_tree.html','../.
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#pub-methods">Public Member Functions</a> |
|
||||
<a href="#pri-methods">Private Member Functions</a> |
|
||||
<a href="#pri-attribs">Private Attributes</a> |
|
||||
<a href="../../da/d66/classrange__queries_1_1per_seg_tree-members.html">List of all members</a> </div>
|
||||
<div class="headertitle"><div class="title">range_queries::perSegTree Class Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
@@ -136,62 +122,49 @@ $(function(){initNavTree('d8/d28/classrange__queries_1_1per_seg_tree.html','../.
|
||||
<div class="dynheader">
|
||||
Collaboration diagram for range_queries::perSegTree:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg" width="100%" height="436"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
|
||||
<div class="center"><div class="zoom"><iframe scrolling="no" loading="lazy" frameborder="0" src="../../d6/d47/classrange__queries_1_1per_seg_tree__coll__graph.svg" width="100%" height="437"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
|
||||
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:Node" id="r_Node"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a></td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||||
Public Member Functions</h2></td></tr>
|
||||
<tr class="memitem:ac83bcabf5a8db8b0d8d156a4c1bcd4c3" id="r_ac83bcabf5a8db8b0d8d156a4c1bcd4c3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac83bcabf5a8db8b0d8d156a4c1bcd4c3">construct</a> (const std::vector< int64_t > &<a class="el" href="#a8ff495d2f389b4aaa54449c26c6078f3">vec</a>)</td></tr>
|
||||
<tr class="memdesc:ac83bcabf5a8db8b0d8d156a4c1bcd4c3"><td class="mdescLeft"> </td><td class="mdescRight">Constructing the segment tree with the values in the passed vector. Returned root pointer is pushed in the pointers vector to have access to the original version if the segment tree is updated. <br /></td></tr>
|
||||
<tr class="separator:ac83bcabf5a8db8b0d8d156a4c1bcd4c3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af87494e6cf012d28c4f5b9d1c15f9c5d" id="r_af87494e6cf012d28c4f5b9d1c15f9c5d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#af87494e6cf012d28c4f5b9d1c15f9c5d">update</a> (const uint32_t &l, const uint32_t &r, const int64_t &value)</td></tr>
|
||||
<tr class="memdesc:af87494e6cf012d28c4f5b9d1c15f9c5d"><td class="mdescLeft"> </td><td class="mdescRight">Doing range update by passing the left and right indexes of the range as well as the value to be added. <br /></td></tr>
|
||||
<tr class="separator:af87494e6cf012d28c4f5b9d1c15f9c5d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad484002bcb701820d55f32ea5d525571" id="r_ad484002bcb701820d55f32ea5d525571"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#ad484002bcb701820d55f32ea5d525571">query</a> (const uint32_t &l, const uint32_t &r, const uint32_t &version)</td></tr>
|
||||
<tr class="memdesc:ad484002bcb701820d55f32ea5d525571"><td class="mdescLeft"> </td><td class="mdescRight">Querying the range from index l to index r, getting the sum of the elements whose index x satisfies l<=x<=r. <br /></td></tr>
|
||||
<tr class="separator:ad484002bcb701820d55f32ea5d525571"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0fe4e431f3e09c274ecd7d2d58dcb865" id="r_a0fe4e431f3e09c274ecd7d2d58dcb865"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0fe4e431f3e09c274ecd7d2d58dcb865">size</a> ()</td></tr>
|
||||
<tr class="memdesc:a0fe4e431f3e09c274ecd7d2d58dcb865"><td class="mdescLeft"> </td><td class="mdescRight">Getting the number of versions after updates so far which is equal to the size of the pointers vector. <br /></td></tr>
|
||||
<tr class="separator:a0fe4e431f3e09c274ecd7d2d58dcb865"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-pri-methods" class="groupheader"><a id="pri-methods" name="pri-methods"></a>
|
||||
Private Member Functions</h2></td></tr>
|
||||
<tr class="memitem:a0cec4b77d264521717cf9b0482c45817" id="r_a0cec4b77d264521717cf9b0482c45817"><td class="memItemLeft" align="right" valign="top">std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a0cec4b77d264521717cf9b0482c45817">newKid</a> (std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > const &curr)</td></tr>
|
||||
<tr class="memdesc:a0cec4b77d264521717cf9b0482c45817"><td class="mdescLeft"> </td><td class="mdescRight">Creating a new node with the same values of curr node. <br /></td></tr>
|
||||
<tr class="separator:a0cec4b77d264521717cf9b0482c45817"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ace7f57935b3bb9446f11c239fd89ae79" id="r_ace7f57935b3bb9446f11c239fd89ae79"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ace7f57935b3bb9446f11c239fd89ae79">lazy</a> (const uint32_t &i, const uint32_t &j, std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > const &curr)</td></tr>
|
||||
<tr class="memdesc:ace7f57935b3bb9446f11c239fd89ae79"><td class="mdescLeft"> </td><td class="mdescRight">If there is some value to be propagated to the passed node, value is added to the node and the children of the node, if exist, are copied and the propagated value is also added to them. <br /></td></tr>
|
||||
<tr class="separator:ace7f57935b3bb9446f11c239fd89ae79"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6d3f2465a7c5803a1ff16c5378bcc5e4" id="r_a6d3f2465a7c5803a1ff16c5378bcc5e4"><td class="memItemLeft" align="right" valign="top">std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6d3f2465a7c5803a1ff16c5378bcc5e4">construct</a> (const uint32_t &i, const uint32_t &j)</td></tr>
|
||||
<tr class="memdesc:a6d3f2465a7c5803a1ff16c5378bcc5e4"><td class="mdescLeft"> </td><td class="mdescRight">Constructing the segment tree with the early passed vector. Every call creates a node to hold the sum of the given range, set its pointers to the children, and set its value to the sum of the children's values. <br /></td></tr>
|
||||
<tr class="separator:a6d3f2465a7c5803a1ff16c5378bcc5e4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a24487eda25123bc4d112e8430821a6c6" id="r_a24487eda25123bc4d112e8430821a6c6"><td class="memItemLeft" align="right" valign="top">std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a24487eda25123bc4d112e8430821a6c6">update</a> (const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, const int64_t &value, std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > const &curr)</td></tr>
|
||||
<tr class="memdesc:a24487eda25123bc4d112e8430821a6c6"><td class="mdescLeft"> </td><td class="mdescRight">Doing range update, checking at every node if it has some value to be propagated. All nodes affected by the update are copied and propagation value is added to the leaf of them. <br /></td></tr>
|
||||
<tr class="separator:a24487eda25123bc4d112e8430821a6c6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae8ae4b1835e5e8aec32f68c5059ed4d4" id="r_ae8ae4b1835e5e8aec32f68c5059ed4d4"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae8ae4b1835e5e8aec32f68c5059ed4d4">query</a> (const uint32_t &i, const uint32_t &j, const uint32_t &l, const uint32_t &r, std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > const &curr)</td></tr>
|
||||
<tr class="memdesc:ae8ae4b1835e5e8aec32f68c5059ed4d4"><td class="mdescLeft"> </td><td class="mdescRight">Querying the range from index l to index r, checking at every node if it has some value to be propagated. Current node's value is returned if its range is completely inside the wanted range, else 0 is returned. <br /></td></tr>
|
||||
<tr class="separator:ae8ae4b1835e5e8aec32f68c5059ed4d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-pri-attribs" class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
||||
Private Attributes</h2></td></tr>
|
||||
<tr class="memitem:a6f5b36111f90807a9fdf6bbca04f535e" id="r_a6f5b36111f90807a9fdf6bbca04f535e"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#a6f5b36111f90807a9fdf6bbca04f535e">n</a> = 0</td></tr>
|
||||
<tr class="separator:a6f5b36111f90807a9fdf6bbca04f535e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1eac9cf0613dfc8e2b0195009dd5c9d5" id="r_a1eac9cf0613dfc8e2b0195009dd5c9d5"><td class="memItemLeft" align="right" valign="top">std::vector< std::shared_ptr< <a class="el" href="../../d5/d66/classrange__queries_1_1per_seg_tree_1_1_node.html">Node</a> > > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1eac9cf0613dfc8e2b0195009dd5c9d5">ptrs</a> {}</td></tr>
|
||||
<tr class="memdesc:a1eac9cf0613dfc8e2b0195009dd5c9d5"><td class="mdescLeft"> </td><td class="mdescRight">number of elements/leaf nodes in the segment tree <br /></td></tr>
|
||||
<tr class="separator:a1eac9cf0613dfc8e2b0195009dd5c9d5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8ff495d2f389b4aaa54449c26c6078f3" id="r_a8ff495d2f389b4aaa54449c26c6078f3"><td class="memItemLeft" align="right" valign="top">std::vector< int64_t > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a8ff495d2f389b4aaa54449c26c6078f3">vec</a> {}</td></tr>
|
||||
<tr class="separator:a8ff495d2f389b4aaa54449c26c6078f3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Range query here is range sum, but the code can be modified to make different queries like range max or min. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d58/persistent__seg__tree__lazy__prop_8cpp_source.html#l00039">39</a> of file <a class="el" href="../../d5/d58/persistent__seg__tree__lazy__prop_8cpp_source.html">persistent_seg_tree_lazy_prop.cpp</a>.</p>
|
||||
</div><h2 class="groupheader">Member Function Documentation</h2>
|
||||
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
|
||||
<a id="ac83bcabf5a8db8b0d8d156a4c1bcd4c3" name="ac83bcabf5a8db8b0d8d156a4c1bcd4c3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac83bcabf5a8db8b0d8d156a4c1bcd4c3">◆ </a></span>construct() <span class="overload">[1/2]</span></h2>
|
||||
|
||||
@@ -694,7 +667,7 @@ Private Attributes</h2></td></tr>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Member Data Documentation</h2>
|
||||
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
|
||||
<a id="a6f5b36111f90807a9fdf6bbca04f535e" name="a6f5b36111f90807a9fdf6bbca04f535e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6f5b36111f90807a9fdf6bbca04f535e">◆ </a></span>n</h2>
|
||||
|
||||
@@ -777,11 +750,19 @@ Private Attributes</h2></td></tr>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<div id="page-nav" class="page-nav-panel">
|
||||
<div id="page-nav-resize-handle"></div>
|
||||
<div id="page-nav-tree">
|
||||
<div id="page-nav-contents">
|
||||
</div><!-- page-nav-contents -->
|
||||
</div><!-- page-nav-tree -->
|
||||
</div><!-- page-nav -->
|
||||
</div><!-- container -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dd/d69/namespacerange__queries.html">range_queries</a></li><li class="navelem"><a class="el" href="../../d8/d28/classrange__queries_1_1per_seg_tree.html">perSegTree</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
||||
<li class="navelem"><a href="../../dd/d69/namespacerange__queries.html">range_queries</a></li><li class="navelem"><a href="../../d8/d28/classrange__queries_1_1per_seg_tree.html">perSegTree</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user