etl/docs/maths/histogram.md
2026-05-19 12:12:14 +01:00

353 lines
5.4 KiB
Markdown

---
title: "Histgram"
---
{{< callout type="info">}}
Header: `histogram.h`
From: `20.9.0`
{{< /callout >}}
## Member types
`const_iterator` The iterator used to traverse the histogram data.
`key_type` The index type for the histogram.
`count_type` The type used for the histogram counter.
`value_type` The type returned from the histogram.
## Constants
`Max_Size` The maximum number of elements in the histogram.
## histogram
```cpp
template <typename TKey, typename TCount, size_t Max_Keys>
class histogram
```
**Description**
A histogram where the start index of the keys is defined in the constructor.
## Member functions
```cpp
histogram()
```
**Description**
Default constructor.
---
```cpp
template <typename TIterator>
histogram(TIterator first, TIterator last)
```
**Description**
Construct from an iterator range.
---
## histogram
```cpp
template <typename TKey, typename TCount, size_t Max_Keys, size_t Start_Index>
class histogram
```
**Description**
A histogram where the start index of the keys is defined as a template parameter.
## Member functions
```cpp
histogram()
```
**Description**
Default constructor.
---
```cpp
template <typename TIterator>
histogram(TIterator first, TIterator last)
```
**Description**
Construct from an iterator range.
---
```cpp
histogram(const histogram& other)
```
**Description**
Copy constructor.
---
```cpp
histogram(histogram&& other)
```
**Description**
Move constructor.
---
```cpp
histogram& operator =(const histogram& rhs)
```
**Description**
Assignment operator.
---
```cpp
histogram& operator =(histogram&& rhs)
```
**Description**
Move assignment operator.
---
```cpp
void add(key_type key)
```
**Description**
Increment the count for the key.
---
```cpp
template <typename TIterator>
void add(TIterator first, TIterator last)
```
**Description**
Increment the counts for the keys from an iterator range.
---
```cpp
void operator ()(key_type key)
```
**Description**
Increment the count for the key.
---
```cpp
template <typename TIterator>
void operator ()(TIterator first, TIterator last)
```
**Description**
Increment the counts for the keys from an iterator range.
---
```cpp
value_type operator [](key_type key) const
```
**Description**
Get the count for a key.
---
```cpp
const_iterator begin() const
const_iterator cbegin() const
```
**Description**
Get the iterator to the first histogram entry.
---
```cpp
const_iterator end() const
const_iterator cend() const
```
**Description**
Get the iterator to the last + 1 histogram entry.
---
```cpp
void clear()
```
**Description**
Clear the counts to zero.
---
```cpp
ETL_CONSTEXPR size_t size() const
```
Get the number of items in the histogram.
**Description**
Always equal to max_size().
---
```cpp
ETL_CONSTEXPR size_t max_size() const
```
**Description**
Get the number of items in the histogram.
---
```cpp
size_t count() const
```
**Description**
Get the total of all the counts.
## sparse_histogram
```cpp
template <typename TKey, typename TCount, size_t Max_Keys>
class sparse_histogram
```
**Description**
A histogram where the keys are sparse or non-integral types.
## Types
`const_iterator` The iterator used to traverse the histogram data.
`key_type` The index type for the histogram.
`count_type` The type used for the histogram counter.
`value_type` The type returned from the histogram. A pair containing the key and count.
## Constants
`Max_Size` The maximum number of elements in the histogram.
## Member functions
```cpp
sparse_histogram()
```
**Description**
Default constructor.
---
```cpp
template <typename TIterator>
sparse_histogram(TIterator first, TIterator last)
```
**Description**
Construct from an iterator range.
---
```cpp
sparse_histogram(const sparse_histogram& other)
```
**Description**
Copy constructor.
---
```cpp
sparse_histogram(sparse_histogram&& other)
```
**Description**
Move constructor.
---
```cpp
sparse_histogram& operator =(const sparse_histogram& rhs)
```
**Description**
Assignment operator.
---
```cpp
sparse_histogram& operator =(sparse_histogram&& rhs)
```
**Description**
Move assignment operator.
---
```cpp
void add(key_type key)
```
**Description**
Increment the count for the key.
---
```cpp
template <typename TIterator>
void add(TIterator first, TIterator last)
```
**Description**
Increment the counts for the keys from an iterator range.
---
```cpp
void operator ()(key_type key)
```
**Description**
Increment the count for the key.
---
```cpp
template <typename TIterator>
void operator ()(TIterator first, TIterator last)
```
**Description**
Increment the counts for the keys from an iterator range.
---
```cpp
const value_type& operator [](key_type key) const
```
**Description**
Get the count for a key.
---
```cpp
const_iterator begin() const
const_iterator cbegin() const
```
**Description**
Get the iterator to the first histogram entry.
---
```cpp
const_iterator end() const
const_iterator cend() const
```
**Description**
Get the iterator to the last + 1 histogram entry.
---
```cpp
void clear()
```
**Description**
Clear the counts to zero.
---
```cpp
ETL_CONSTEXPR size_t size() const
```
**Description**
Get the number of items in the histogram.
---
```cpp
ETL_CONSTEXPR size_t max_size() const
```
**Description**
Get the number of items in the histogram.
---
```cpp
size_t count() const
```
**Description**
Get the total of all the counts.