blob: 9a2e05acdc419ec32edb250629cdb7f2d2902dd3 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>datasketches-cpp: count_min_sketch&lt; W, Allocator &gt; Class Template Reference</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="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>
<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">datasketches-cpp
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacedatasketches.html">datasketches</a></li><li class="navelem"><a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classdatasketches_1_1count__min__sketch-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">count_min_sketch&lt; W, Allocator &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.
<a href="classdatasketches_1_1count__min__sketch.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="count__min_8hpp_source.html">count_min.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8dbb00b2bf984b434482e3da006e2238"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a8dbb00b2bf984b434482e3da006e2238">count_min_sketch</a> (uint8_t num_hashes, uint32_t num_buckets, uint64_t seed=DEFAULT_SEED, const Allocator &amp;allocator=Allocator())</td></tr>
<tr class="memdesc:a8dbb00b2bf984b434482e3da006e2238"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an instance of the sketch given parameters _num_hashes, _num_buckets and hash seed, <code>seed</code>. <a href="classdatasketches_1_1count__min__sketch.html#a8dbb00b2bf984b434482e3da006e2238">More...</a><br /></td></tr>
<tr class="separator:a8dbb00b2bf984b434482e3da006e2238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bd30e22135f7abd37d5b2b45d577d0c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a6bd30e22135f7abd37d5b2b45d577d0c">get_num_hashes</a> () const</td></tr>
<tr class="separator:a6bd30e22135f7abd37d5b2b45d577d0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56843138b87eb57c033f4ad26d8eb146"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a56843138b87eb57c033f4ad26d8eb146">get_num_buckets</a> () const</td></tr>
<tr class="separator:a56843138b87eb57c033f4ad26d8eb146"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9004656ac2e34c35d8a7a0773285385a"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a9004656ac2e34c35d8a7a0773285385a">get_seed</a> () const</td></tr>
<tr class="separator:a9004656ac2e34c35d8a7a0773285385a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5356c92bb629951dcb748e51677a3886"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a5356c92bb629951dcb748e51677a3886">get_relative_error</a> () const</td></tr>
<tr class="separator:a5356c92bb629951dcb748e51677a3886"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68bf5133e42650cdfe20a7916037ab4b"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a68bf5133e42650cdfe20a7916037ab4b">get_total_weight</a> () const</td></tr>
<tr class="separator:a68bf5133e42650cdfe20a7916037ab4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c7a3314a5665e9d244acc5c1b5c43d6"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a8c7a3314a5665e9d244acc5c1b5c43d6">get_estimate</a> (uint64_t item) const</td></tr>
<tr class="memdesc:a8c7a3314a5665e9d244acc5c1b5c43d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specific get_estimate function for uint64_t type see generic get_estimate function. <a href="classdatasketches_1_1count__min__sketch.html#a8c7a3314a5665e9d244acc5c1b5c43d6">More...</a><br /></td></tr>
<tr class="separator:a8c7a3314a5665e9d244acc5c1b5c43d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad380830e8ea7c1d8c7cb5e6a321c9817"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#ad380830e8ea7c1d8c7cb5e6a321c9817">get_estimate</a> (int64_t item) const</td></tr>
<tr class="memdesc:ad380830e8ea7c1d8c7cb5e6a321c9817"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specific get_estimate function for int64_t type see generic get_estimate function. <a href="classdatasketches_1_1count__min__sketch.html#ad380830e8ea7c1d8c7cb5e6a321c9817">More...</a><br /></td></tr>
<tr class="separator:ad380830e8ea7c1d8c7cb5e6a321c9817"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae77ba09c468a102946bbc2f0a0a5d7bf"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#ae77ba09c468a102946bbc2f0a0a5d7bf">get_estimate</a> (const std::string &amp;item) const</td></tr>
<tr class="memdesc:ae77ba09c468a102946bbc2f0a0a5d7bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specific get_estimate function for std::string type see generic get_estimate function. <a href="classdatasketches_1_1count__min__sketch.html#ae77ba09c468a102946bbc2f0a0a5d7bf">More...</a><br /></td></tr>
<tr class="separator:ae77ba09c468a102946bbc2f0a0a5d7bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6b3c87aab0c7a3c2ee213fbc7aa48e3"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#af6b3c87aab0c7a3c2ee213fbc7aa48e3">get_estimate</a> (const void *item, size_t size) const</td></tr>
<tr class="memdesc:af6b3c87aab0c7a3c2ee213fbc7aa48e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the generic estimate query function for any of the given datatypes. <a href="classdatasketches_1_1count__min__sketch.html#af6b3c87aab0c7a3c2ee213fbc7aa48e3">More...</a><br /></td></tr>
<tr class="separator:af6b3c87aab0c7a3c2ee213fbc7aa48e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70356e097d2d952c8f0d843087556b52"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a70356e097d2d952c8f0d843087556b52">get_upper_bound</a> (const void *item, size_t size) const</td></tr>
<tr class="memdesc:a70356e097d2d952c8f0d843087556b52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the upper bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#a70356e097d2d952c8f0d843087556b52">More...</a><br /></td></tr>
<tr class="separator:a70356e097d2d952c8f0d843087556b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b7ba50a6af6e76423cc65947194d14c"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a6b7ba50a6af6e76423cc65947194d14c">get_upper_bound</a> (int64_t item) const</td></tr>
<tr class="memdesc:a6b7ba50a6af6e76423cc65947194d14c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the upper bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#a6b7ba50a6af6e76423cc65947194d14c">More...</a><br /></td></tr>
<tr class="separator:a6b7ba50a6af6e76423cc65947194d14c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8f47f2378d8a057d82e82736ff37f3c"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#ab8f47f2378d8a057d82e82736ff37f3c">get_upper_bound</a> (uint64_t item) const</td></tr>
<tr class="memdesc:ab8f47f2378d8a057d82e82736ff37f3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the upper bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#ab8f47f2378d8a057d82e82736ff37f3c">More...</a><br /></td></tr>
<tr class="separator:ab8f47f2378d8a057d82e82736ff37f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af378c05bd5303198f7dfc182c725df83"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#af378c05bd5303198f7dfc182c725df83">get_upper_bound</a> (const std::string &amp;item) const</td></tr>
<tr class="memdesc:af378c05bd5303198f7dfc182c725df83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the upper bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#af378c05bd5303198f7dfc182c725df83">More...</a><br /></td></tr>
<tr class="separator:af378c05bd5303198f7dfc182c725df83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d1d4341a397ae681f03e4dc00423391"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a7d1d4341a397ae681f03e4dc00423391">get_lower_bound</a> (const void *item, size_t size) const</td></tr>
<tr class="memdesc:a7d1d4341a397ae681f03e4dc00423391"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the lower bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#a7d1d4341a397ae681f03e4dc00423391">More...</a><br /></td></tr>
<tr class="separator:a7d1d4341a397ae681f03e4dc00423391"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29e98b602bc74b40b017ec9e05a0940f"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a29e98b602bc74b40b017ec9e05a0940f">get_lower_bound</a> (int64_t item) const</td></tr>
<tr class="memdesc:a29e98b602bc74b40b017ec9e05a0940f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the lower bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#a29e98b602bc74b40b017ec9e05a0940f">More...</a><br /></td></tr>
<tr class="separator:a29e98b602bc74b40b017ec9e05a0940f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab131655963c3d3a786ada936f67f5cb7"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#ab131655963c3d3a786ada936f67f5cb7">get_lower_bound</a> (uint64_t item) const</td></tr>
<tr class="memdesc:ab131655963c3d3a786ada936f67f5cb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the lower bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#ab131655963c3d3a786ada936f67f5cb7">More...</a><br /></td></tr>
<tr class="separator:ab131655963c3d3a786ada936f67f5cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4170344c96a738e9c14933e6d40c2c5f"><td class="memItemLeft" align="right" valign="top">W&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a4170344c96a738e9c14933e6d40c2c5f">get_lower_bound</a> (const std::string &amp;item) const</td></tr>
<tr class="memdesc:a4170344c96a738e9c14933e6d40c2c5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the sketch for the lower bound of a given item. <a href="classdatasketches_1_1count__min__sketch.html#a4170344c96a738e9c14933e6d40c2c5f">More...</a><br /></td></tr>
<tr class="separator:a4170344c96a738e9c14933e6d40c2c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf1fad8a6035d808e06ea84fbffb6a86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#adf1fad8a6035d808e06ea84fbffb6a86">update</a> (const void *item, size_t size, W weight)</td></tr>
<tr class="memdesc:adf1fad8a6035d808e06ea84fbffb6a86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update this sketch with given data of any type. <a href="classdatasketches_1_1count__min__sketch.html#adf1fad8a6035d808e06ea84fbffb6a86">More...</a><br /></td></tr>
<tr class="separator:adf1fad8a6035d808e06ea84fbffb6a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02f5be4a79c35023885e53cf9506b62f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a02f5be4a79c35023885e53cf9506b62f">update</a> (uint64_t item, W weight=1)</td></tr>
<tr class="memdesc:a02f5be4a79c35023885e53cf9506b62f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update this sketch with a given item. <a href="classdatasketches_1_1count__min__sketch.html#a02f5be4a79c35023885e53cf9506b62f">More...</a><br /></td></tr>
<tr class="separator:a02f5be4a79c35023885e53cf9506b62f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3845e9cef788e7edb8733ec2079818fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a3845e9cef788e7edb8733ec2079818fa">update</a> (int64_t item, W weight=1)</td></tr>
<tr class="memdesc:a3845e9cef788e7edb8733ec2079818fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update this sketch with a given item. <a href="classdatasketches_1_1count__min__sketch.html#a3845e9cef788e7edb8733ec2079818fa">More...</a><br /></td></tr>
<tr class="separator:a3845e9cef788e7edb8733ec2079818fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4de68fd94f5800d3e862da681e3236d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a4de68fd94f5800d3e862da681e3236d1">update</a> (const std::string &amp;item, W weight=1)</td></tr>
<tr class="memdesc:a4de68fd94f5800d3e862da681e3236d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update this sketch with a given string. <a href="classdatasketches_1_1count__min__sketch.html#a4de68fd94f5800d3e862da681e3236d1">More...</a><br /></td></tr>
<tr class="separator:a4de68fd94f5800d3e862da681e3236d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab53a0403cb869426c5eb6a8c70ca3e7f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#ab53a0403cb869426c5eb6a8c70ca3e7f">merge</a> (const <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a> &amp;other_sketch)</td></tr>
<tr class="memdesc:ab53a0403cb869426c5eb6a8c70ca3e7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Merges another <a class="el" href="classdatasketches_1_1count__min__sketch.html" title="C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.">count_min_sketch</a> into this <a class="el" href="classdatasketches_1_1count__min__sketch.html" title="C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.">count_min_sketch</a>. <a href="classdatasketches_1_1count__min__sketch.html#ab53a0403cb869426c5eb6a8c70ca3e7f">More...</a><br /></td></tr>
<tr class="separator:ab53a0403cb869426c5eb6a8c70ca3e7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a2b7a58dc85678d08752945ff655362"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a5a2b7a58dc85678d08752945ff655362">is_empty</a> () const</td></tr>
<tr class="memdesc:a5a2b7a58dc85678d08752945ff655362"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if this sketch is empty. <a href="classdatasketches_1_1count__min__sketch.html#a5a2b7a58dc85678d08752945ff655362">More...</a><br /></td></tr>
<tr class="separator:a5a2b7a58dc85678d08752945ff655362"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed372241c10ffd041bee85602edb199a"><td class="memItemLeft" align="right" valign="top">string&lt; Allocator &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#aed372241c10ffd041bee85602edb199a">to_string</a> () const</td></tr>
<tr class="memdesc:aed372241c10ffd041bee85602edb199a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string describing the sketch. <a href="classdatasketches_1_1count__min__sketch.html#aed372241c10ffd041bee85602edb199a">More...</a><br /></td></tr>
<tr class="separator:aed372241c10ffd041bee85602edb199a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa7956f1d2c14624431b3fb7cd976f63"><td class="memItemLeft" align="right" valign="top">const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#afa7956f1d2c14624431b3fb7cd976f63">begin</a> () const</td></tr>
<tr class="memdesc:afa7956f1d2c14624431b3fb7cd976f63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator pointing to the first item in the sketch. <a href="classdatasketches_1_1count__min__sketch.html#afa7956f1d2c14624431b3fb7cd976f63">More...</a><br /></td></tr>
<tr class="separator:afa7956f1d2c14624431b3fb7cd976f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c2da097065929e9f586049b19039fc9"><td class="memItemLeft" align="right" valign="top">const_iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a2c2da097065929e9f586049b19039fc9">end</a> () const</td></tr>
<tr class="memdesc:a2c2da097065929e9f586049b19039fc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator pointing to the past-the-end item in the sketch. <a href="classdatasketches_1_1count__min__sketch.html#a2c2da097065929e9f586049b19039fc9">More...</a><br /></td></tr>
<tr class="separator:a2c2da097065929e9f586049b19039fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af900f66ecee1991981f6f33c52a10bc9"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#af900f66ecee1991981f6f33c52a10bc9">get_serialized_size_bytes</a> () const</td></tr>
<tr class="memdesc:af900f66ecee1991981f6f33c52a10bc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes size needed to serialize the current state of the sketch. <a href="classdatasketches_1_1count__min__sketch.html#af900f66ecee1991981f6f33c52a10bc9">More...</a><br /></td></tr>
<tr class="separator:af900f66ecee1991981f6f33c52a10bc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bcdd98ee6e6eb9b501b8dc5de5e8924"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a1bcdd98ee6e6eb9b501b8dc5de5e8924">serialize</a> (std::ostream &amp;os) const</td></tr>
<tr class="memdesc:a1bcdd98ee6e6eb9b501b8dc5de5e8924"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method serializes the sketch into a given stream in a binary form. <a href="classdatasketches_1_1count__min__sketch.html#a1bcdd98ee6e6eb9b501b8dc5de5e8924">More...</a><br /></td></tr>
<tr class="separator:a1bcdd98ee6e6eb9b501b8dc5de5e8924"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c7a57911806d47ee3cebe9fad59f836"><td class="memItemLeft" align="right" valign="top">vector_bytes&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a1c7a57911806d47ee3cebe9fad59f836">serialize</a> (unsigned header_size_bytes=0) const</td></tr>
<tr class="memdesc:a1c7a57911806d47ee3cebe9fad59f836"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method serializes the sketch as a vector of bytes. <a href="classdatasketches_1_1count__min__sketch.html#a1c7a57911806d47ee3cebe9fad59f836">More...</a><br /></td></tr>
<tr class="separator:a1c7a57911806d47ee3cebe9fad59f836"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e99c6263568d88f95ca01dc694f1051"><td class="memItemLeft" align="right" valign="top">allocator_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a6e99c6263568d88f95ca01dc694f1051">get_allocator</a> () const</td></tr>
<tr class="separator:a6e99c6263568d88f95ca01dc694f1051"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a2909753e9106aad95a740580c3865d98"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a2909753e9106aad95a740580c3865d98">suggest_num_buckets</a> (double relative_error)</td></tr>
<tr class="memdesc:a2909753e9106aad95a740580c3865d98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suggests the number of buckets required to achieve the given relative error. <a href="classdatasketches_1_1count__min__sketch.html#a2909753e9106aad95a740580c3865d98">More...</a><br /></td></tr>
<tr class="separator:a2909753e9106aad95a740580c3865d98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40b2f93d707496a57b16679be4a58a2f"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a40b2f93d707496a57b16679be4a58a2f">suggest_num_hashes</a> (double confidence)</td></tr>
<tr class="memdesc:a40b2f93d707496a57b16679be4a58a2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suggests the number of hash functions required to achieve the given confidence. <a href="classdatasketches_1_1count__min__sketch.html#a40b2f93d707496a57b16679be4a58a2f">More...</a><br /></td></tr>
<tr class="separator:a40b2f93d707496a57b16679be4a58a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a9f344e0399b775f82358b8807727af"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#a0a9f344e0399b775f82358b8807727af">deserialize</a> (std::istream &amp;is, uint64_t seed=DEFAULT_SEED, const Allocator &amp;allocator=Allocator())</td></tr>
<tr class="memdesc:a0a9f344e0399b775f82358b8807727af"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method deserializes a sketch from a given stream. <a href="classdatasketches_1_1count__min__sketch.html#a0a9f344e0399b775f82358b8807727af">More...</a><br /></td></tr>
<tr class="separator:a0a9f344e0399b775f82358b8807727af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc0d4bcd3c9df114cec65f2332ec626e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdatasketches_1_1count__min__sketch.html#afc0d4bcd3c9df114cec65f2332ec626e">deserialize</a> (const void *bytes, size_t size, uint64_t seed=DEFAULT_SEED, const Allocator &amp;allocator=Allocator())</td></tr>
<tr class="memdesc:afc0d4bcd3c9df114cec65f2332ec626e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method deserializes a sketch from a given array of bytes. <a href="classdatasketches_1_1count__min__sketch.html#afc0d4bcd3c9df114cec65f2332ec626e">More...</a><br /></td></tr>
<tr class="separator:afc0d4bcd3c9df114cec65f2332ec626e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename W, typename Allocator = std::allocator&lt;W&gt;&gt;<br />
class datasketches::count_min_sketch&lt; W, Allocator &gt;</h3>
<p>C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan. </p>
<p>[1] - <a href="http://dimacs.rutgers.edu/~graham/pubs/papers/cm-full.pdf">http://dimacs.rutgers.edu/~graham/pubs/papers/cm-full.pdf</a> The template type W is the type of the vector that contains the weights of the objects inserted into the sketch, not the type of the input items themselves. </p><dl class="section author"><dt>Author</dt><dd>Charlie Dickens </dd></dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8dbb00b2bf984b434482e3da006e2238"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8dbb00b2bf984b434482e3da006e2238">&#9670;&nbsp;</a></span>count_min_sketch()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a> </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>num_hashes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>num_buckets</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>seed</em> = <code>DEFAULT_SEED</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const Allocator &amp;&#160;</td>
<td class="paramname"><em>allocator</em> = <code>Allocator()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates an instance of the sketch given parameters _num_hashes, _num_buckets and hash seed, <code>seed</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num_hashes</td><td>number of hash functions in the sketch. Equivalently the number of rows in the array </td></tr>
<tr><td class="paramname">num_buckets</td><td>number of buckets that hash functions map into. Equivalently the number of columns in the array </td></tr>
<tr><td class="paramname">seed</td><td>for hash function </td></tr>
<tr><td class="paramname">allocator</td><td>to acquire and release memory</td></tr>
</table>
</dd>
</dl>
<p>The items inserted into the sketch can be arbitrary type, so long as they are hashable via murmurhash. Only update and estimate methods are added for uint64_t and string types. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a6bd30e22135f7abd37d5b2b45d577d0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bd30e22135f7abd37d5b2b45d577d0c">&#9670;&nbsp;</a></span>get_num_hashes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t get_num_hashes</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>configured _num_hashes of this sketch </dd></dl>
</div>
</div>
<a id="a56843138b87eb57c033f4ad26d8eb146"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56843138b87eb57c033f4ad26d8eb146">&#9670;&nbsp;</a></span>get_num_buckets()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t get_num_buckets</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>configured _num_buckets of this sketch </dd></dl>
</div>
</div>
<a id="a9004656ac2e34c35d8a7a0773285385a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9004656ac2e34c35d8a7a0773285385a">&#9670;&nbsp;</a></span>get_seed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t get_seed</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>configured seed of this sketch </dd></dl>
</div>
</div>
<a id="a5356c92bb629951dcb748e51677a3886"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5356c92bb629951dcb748e51677a3886">&#9670;&nbsp;</a></span>get_relative_error()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double get_relative_error</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>epsilon The maximum permissible error for any frequency estimate query. epsilon = ceil(e / _num_buckets) </dd></dl>
</div>
</div>
<a id="a68bf5133e42650cdfe20a7916037ab4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68bf5133e42650cdfe20a7916037ab4b">&#9670;&nbsp;</a></span>get_total_weight()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_total_weight</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>_total_weight The total weight currently inserted into the stream. </dd></dl>
</div>
</div>
<a id="a2909753e9106aad95a740580c3865d98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2909753e9106aad95a740580c3865d98">&#9670;&nbsp;</a></span>suggest_num_buckets()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t suggest_num_buckets </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>relative_error</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Suggests the number of buckets required to achieve the given relative error. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">relative_error</td><td>the desired accuracy within which estimates should lie. For example, when relative_error = 0.05, then the returned frequency estimates satisfy the <code>relative_error</code> guarantee that never overestimates the weights but may underestimate the weights by 5% of the total weight in the sketch. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of hash buckets at every level of the sketch required in order to obtain the specified relative error. [1] - Section 3 `&lsquo;Data Structure&rsquo;', page 6. </dd></dl>
</div>
</div>
<a id="a40b2f93d707496a57b16679be4a58a2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40b2f93d707496a57b16679be4a58a2f">&#9670;&nbsp;</a></span>suggest_num_hashes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t suggest_num_hashes </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>confidence</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Suggests the number of hash functions required to achieve the given confidence. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">confidence</td><td>the desired confidence with which estimates should be correct. For example, with 95% confidence, frequency estimates satisfy the <code>relative_error</code> guarantee. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the number of hash functions that are required in order to achieve the specified confidence of the sketch. confidence = 1 - delta, with delta denoting the sketch failure probability in the literature. [1] - Section 3 `&lsquo;Data Structure&rsquo;', page 6. </dd></dl>
</div>
</div>
<a id="a8c7a3314a5665e9d244acc5c1b5c43d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c7a3314a5665e9d244acc5c1b5c43d6">&#9670;&nbsp;</a></span>get_estimate() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_estimate </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Specific get_estimate function for uint64_t type see generic get_estimate function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>uint64_t type. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an estimate of the item's frequency. </dd></dl>
</div>
</div>
<a id="ad380830e8ea7c1d8c7cb5e6a321c9817"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad380830e8ea7c1d8c7cb5e6a321c9817">&#9670;&nbsp;</a></span>get_estimate() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_estimate </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Specific get_estimate function for int64_t type see generic get_estimate function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>int64_t type. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an estimate of the item's frequency. </dd></dl>
</div>
</div>
<a id="ae77ba09c468a102946bbc2f0a0a5d7bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae77ba09c468a102946bbc2f0a0a5d7bf">&#9670;&nbsp;</a></span>get_estimate() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_estimate </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Specific get_estimate function for std::string type see generic get_estimate function. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>std::string type </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an estimate of the item's frequency. </dd></dl>
</div>
</div>
<a id="af6b3c87aab0c7a3c2ee213fbc7aa48e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6b3c87aab0c7a3c2ee213fbc7aa48e3">&#9670;&nbsp;</a></span>get_estimate() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_estimate </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>This is the generic estimate query function for any of the given datatypes. </p>
<p>Query the sketch for the estimate of a given item. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>pointer to the data item to be query from the sketch. </td></tr>
<tr><td class="paramname">size</td><td>size of the item in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the estimated frequency of the item denoted f_est satisfying f_true - relative_error*_total_weight &lt;= f_est &lt;= f_true </dd></dl>
</div>
</div>
<a id="a70356e097d2d952c8f0d843087556b52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70356e097d2d952c8f0d843087556b52">&#9670;&nbsp;</a></span>get_upper_bound() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_upper_bound </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the upper bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
<tr><td class="paramname">size</td><td>of the item in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the upper bound on the true frequency of the item f_true &lt;= f_est + relative_error*_total_weight </dd></dl>
</div>
</div>
<a id="a6b7ba50a6af6e76423cc65947194d14c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b7ba50a6af6e76423cc65947194d14c">&#9670;&nbsp;</a></span>get_upper_bound() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_upper_bound </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the upper bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the upper bound on the true frequency of the item f_true &lt;= f_est + relative_error*_total_weight </dd></dl>
</div>
</div>
<a id="ab8f47f2378d8a057d82e82736ff37f3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8f47f2378d8a057d82e82736ff37f3c">&#9670;&nbsp;</a></span>get_upper_bound() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_upper_bound </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the upper bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the upper bound on the true frequency of the item f_true &lt;= f_est + relative_error*_total_weight </dd></dl>
</div>
</div>
<a id="af378c05bd5303198f7dfc182c725df83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af378c05bd5303198f7dfc182c725df83">&#9670;&nbsp;</a></span>get_upper_bound() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_upper_bound </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the upper bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the upper bound on the true frequency of the item f_true &lt;= f_est + relative_error*_total_weight </dd></dl>
</div>
</div>
<a id="a7d1d4341a397ae681f03e4dc00423391"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d1d4341a397ae681f03e4dc00423391">&#9670;&nbsp;</a></span>get_lower_bound() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_lower_bound </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the lower bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
<tr><td class="paramname">size</td><td>of the item in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the lower bound for the query result, f_est, on the true frequency, f_est of the item f_true - relative_error*_total_weight &lt;= f_est </dd></dl>
</div>
</div>
<a id="a29e98b602bc74b40b017ec9e05a0940f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29e98b602bc74b40b017ec9e05a0940f">&#9670;&nbsp;</a></span>get_lower_bound() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_lower_bound </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the lower bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the lower bound for the query result, f_est, on the true frequency, f_est of the item f_true - relative_error*_total_weight &lt;= f_est </dd></dl>
</div>
</div>
<a id="ab131655963c3d3a786ada936f67f5cb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab131655963c3d3a786ada936f67f5cb7">&#9670;&nbsp;</a></span>get_lower_bound() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_lower_bound </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the lower bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the lower bound for the query result, f_est, on the true frequency, f_est of the item f_true - relative_error*_total_weight &lt;= f_est </dd></dl>
</div>
</div>
<a id="a4170344c96a738e9c14933e6d40c2c5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4170344c96a738e9c14933e6d40c2c5f">&#9670;&nbsp;</a></span>get_lower_bound() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">W get_lower_bound </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>item</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the sketch for the lower bound of a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to query </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the lower bound for the query result, f_est, on the true frequency, f_est of the item f_true - relative_error*_total_weight &lt;= f_est </dd></dl>
</div>
</div>
<a id="adf1fad8a6035d808e06ea84fbffb6a86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf1fad8a6035d808e06ea84fbffb6a86">&#9670;&nbsp;</a></span>update() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void update </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">W&#160;</td>
<td class="paramname"><em>weight</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update this sketch with given data of any type. </p>
<p>This is a "universal" update that covers all cases, but may produce different hashes compared to specialized update methods. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>pointer to the data item to be inserted into the sketch. </td></tr>
<tr><td class="paramname">size</td><td>of the data in bytes </td></tr>
<tr><td class="paramname">weight</td><td>arithmetic type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a02f5be4a79c35023885e53cf9506b62f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02f5be4a79c35023885e53cf9506b62f">&#9670;&nbsp;</a></span>update() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void update </td>
<td>(</td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">W&#160;</td>
<td class="paramname"><em>weight</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update this sketch with a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to update the sketch with </td></tr>
<tr><td class="paramname">weight</td><td>arithmetic type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3845e9cef788e7edb8733ec2079818fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3845e9cef788e7edb8733ec2079818fa">&#9670;&nbsp;</a></span>update() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void update </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">W&#160;</td>
<td class="paramname"><em>weight</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update this sketch with a given item. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>to update the sketch with </td></tr>
<tr><td class="paramname">weight</td><td>arithmetic type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4de68fd94f5800d3e862da681e3236d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4de68fd94f5800d3e862da681e3236d1">&#9670;&nbsp;</a></span>update() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void update </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>item</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">W&#160;</td>
<td class="paramname"><em>weight</em> = <code>1</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Update this sketch with a given string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">item</td><td>string to update the sketch with </td></tr>
<tr><td class="paramname">weight</td><td>arithmetic type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab53a0403cb869426c5eb6a8c70ca3e7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab53a0403cb869426c5eb6a8c70ca3e7f">&#9670;&nbsp;</a></span>merge()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void merge </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a>&lt; W, Allocator &gt; &amp;&#160;</td>
<td class="paramname"><em>other_sketch</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Merges another <a class="el" href="classdatasketches_1_1count__min__sketch.html" title="C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.">count_min_sketch</a> into this <a class="el" href="classdatasketches_1_1count__min__sketch.html" title="C++ implementation of the CountMin sketch data structure of Cormode and Muthukrishnan.">count_min_sketch</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">other_sketch</td><td></td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5a2b7a58dc85678d08752945ff655362"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a2b7a58dc85678d08752945ff655362">&#9670;&nbsp;</a></span>is_empty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool is_empty</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if this sketch is empty. </p>
<p>A Count Min Sketch is defined to be empty iff weight == 0 This can only ever happen if all items inserted to the sketch have weights that cancel each other out. </p><dl class="section return"><dt>Returns</dt><dd>empty flag </dd></dl>
</div>
</div>
<a id="aed372241c10ffd041bee85602edb199a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed372241c10ffd041bee85602edb199a">&#9670;&nbsp;</a></span>to_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">string&lt; A &gt; to_string</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a string describing the sketch. </p>
<dl class="section return"><dt>Returns</dt><dd>A string with a human-readable description of the sketch </dd></dl>
</div>
</div>
<a id="afa7956f1d2c14624431b3fb7cd976f63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa7956f1d2c14624431b3fb7cd976f63">&#9670;&nbsp;</a></span>begin()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a>&lt; W, A &gt;::const_iterator begin</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterator pointing to the first item in the sketch. </p>
<p>If the sketch is empty, the returned iterator must not be dereferenced or incremented. </p><dl class="section return"><dt>Returns</dt><dd>iterator pointing to the first item in the sketch </dd></dl>
</div>
</div>
<a id="a2c2da097065929e9f586049b19039fc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c2da097065929e9f586049b19039fc9">&#9670;&nbsp;</a></span>end()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a>&lt; W, A &gt;::const_iterator end</td>
</tr>
</table>
</div><div class="memdoc">
<p>Iterator pointing to the past-the-end item in the sketch. </p>
<p>The past-the-end item is the hypothetical item that would follow the last item. It does not point to any item, and must not be dereferenced or incremented. </p><dl class="section return"><dt>Returns</dt><dd>iterator pointing to the past-the-end item in the sketch </dd></dl>
</div>
</div>
<a id="af900f66ecee1991981f6f33c52a10bc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af900f66ecee1991981f6f33c52a10bc9">&#9670;&nbsp;</a></span>get_serialized_size_bytes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t get_serialized_size_bytes</td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes size needed to serialize the current state of the sketch. </p>
<dl class="section return"><dt>Returns</dt><dd>size in bytes needed to serialize this sketch </dd></dl>
</div>
</div>
<a id="a1bcdd98ee6e6eb9b501b8dc5de5e8924"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1bcdd98ee6e6eb9b501b8dc5de5e8924">&#9670;&nbsp;</a></span>serialize() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void serialize </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>This method serializes the sketch into a given stream in a binary form. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">os</td><td>output stream </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a1c7a57911806d47ee3cebe9fad59f836"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c7a57911806d47ee3cebe9fad59f836">&#9670;&nbsp;</a></span>serialize() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">auto serialize </td>
<td>(</td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>header_size_bytes</em> = <code>0</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>This method serializes the sketch as a vector of bytes. </p>
<p>An optional header can be reserved in front of the sketch. It is an uninitialized space of a given size. This header is used in Datasketches PostgreSQL extension. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">header_size_bytes</td><td>space to reserve in front of the sketch </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0a9f344e0399b775f82358b8807727af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a9f344e0399b775f82358b8807727af">&#9670;&nbsp;</a></span>deserialize() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a> deserialize </td>
<td>(</td>
<td class="paramtype">std::istream &amp;&#160;</td>
<td class="paramname"><em>is</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>seed</em> = <code>DEFAULT_SEED</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const Allocator &amp;&#160;</td>
<td class="paramname"><em>allocator</em> = <code>Allocator()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method deserializes a sketch from a given stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">is</td><td>input stream </td></tr>
<tr><td class="paramname">seed</td><td>the seed for the hash function that was used to create the sketch </td></tr>
<tr><td class="paramname">allocator</td><td>instance of an Allocator </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an instance of a sketch </dd></dl>
</div>
</div>
<a id="afc0d4bcd3c9df114cec65f2332ec626e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc0d4bcd3c9df114cec65f2332ec626e">&#9670;&nbsp;</a></span>deserialize() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classdatasketches_1_1count__min__sketch.html">count_min_sketch</a> deserialize </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>seed</em> = <code>DEFAULT_SEED</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const Allocator &amp;&#160;</td>
<td class="paramname"><em>allocator</em> = <code>Allocator()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This method deserializes a sketch from a given array of bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bytes</td><td>pointer to the array of bytes </td></tr>
<tr><td class="paramname">size</td><td>the size of the array </td></tr>
<tr><td class="paramname">seed</td><td>the seed for the hash function that was used to create the sketch </td></tr>
<tr><td class="paramname">allocator</td><td>instance of an Allocator </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an instance of the sketch </dd></dl>
</div>
</div>
<a id="a6e99c6263568d88f95ca01dc694f1051"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e99c6263568d88f95ca01dc694f1051">&#9670;&nbsp;</a></span>get_allocator()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">allocator_type get_allocator </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>allocator </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>count/include/<a class="el" href="count__min_8hpp_source.html">count_min.hpp</a></li>
<li>count/include/<a class="el" href="count__min__impl_8hpp_source.html">count_min_impl.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>