JUCE: SparseSet< Type > Class Template Reference

JUCE

Public Member Functions | List of all members
SparseSet< Type > Class Template Reference
juce_core » containers

Holds a set of primitive values, storing them as a set of ranges. More...

`#include <juce_SparseSet.h>`

## Public Member Functions
| SparseSet ()=default
| SparseSet (const SparseSet &)=default
SparseSet & | operator= (const SparseSet &)=default
| SparseSet (SparseSet &&other) noexcept
SparseSet & | operator= (SparseSet &&other) noexcept
void | clear ()
| Clears the set. More...
bool | isEmpty () const noexcept
| Checks whether the set is empty. More...
Type | size () const noexcept
| Returns the number of values in the set. More...
Type | operator[] (Type index) const noexcept
| Returns one of the values in the set. More...
bool | contains (Type valueToLookFor) const noexcept
| Checks whether a particular value is in the set. More...
int | getNumRanges () const noexcept
| Returns the number of contiguous blocks of values. More...
Range< Type > | getRange (int rangeIndex) const noexcept
| Returns one of the contiguous ranges of values stored. More...
Range< Type > | getTotalRange () const noexcept
| Returns the range between the lowest and highest values in the set. More...
void | addRange (Range< Type > range)
| Adds a range of contiguous values to the set. More...
void | removeRange (Range< Type > rangeToRemove)
| Removes a range of values from the set. More...
void | invertRange (Range< Type > range)
| Does an XOR of the values in a given range. More...
bool | overlapsRange (Range< Type > range) const noexcept
| Checks whether any part of a given range overlaps any part of this set. More...
bool | containsRange (Range< Type > range) const noexcept
| Checks whether the whole of a given range is contained within this one. More...
const Array< Range< Type > > & | getRanges () const noexcept
| Returns the set as a list of ranges, which you may want to iterate over. More...
bool | operator== (const SparseSet &other) const noexcept
bool | operator!= (const SparseSet &other) const noexcept

## Detailed Description

template<class Type>
class SparseSet< Type >

Holds a set of primitive values, storing them as a set of ranges.

This container acts like an array, but can efficiently hold large contiguous ranges of values. It's quite a specialised class, mostly useful for things like keeping the set of selected rows in a listbox.

The type used as a template parameter must be an integer type, such as int, short, int64, etc.

## Constructor & Destructor Documentation

## ◆ SparseSet() [1/3]

template<class Type >

SparseSet< Type >::SparseSet | ( |  | ) |
| default

## ◆ SparseSet() [2/3]

template<class Type >

SparseSet< Type >::SparseSet | ( | const SparseSet< Type > & |  | ) |
| default

## ◆ SparseSet() [3/3]

template<class Type >

SparseSet< Type >::SparseSet | ( | SparseSet< Type > && | other | ) |
| noexcept

## Member Function Documentation

## ◆ operator=() [1/2]

template<class Type >

SparseSet & SparseSet< Type >::operator= | ( | const SparseSet< Type > & |  | ) |
| default

## ◆ operator=() [2/2]

template<class Type >

SparseSet & SparseSet< Type >::operator= | ( | SparseSet< Type > && | other | ) |
| noexcept

## ◆ clear()

template<class Type >

void SparseSet< Type >::clear | ( |  | ) |

Clears the set.

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::clear().

## ◆ isEmpty()

template<class Type >

bool SparseSet< Type >::isEmpty | ( |  | ) | const
| noexcept

Checks whether the set is empty.

This is much quicker than using (size() == 0).

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::isEmpty().

## ◆ size()

template<class Type >

Type SparseSet< Type >::size | ( |  | ) | const
| noexcept

Returns the number of values in the set.

Because of the way the data is stored, this method can take longer if there are a lot of items in the set. Use isEmpty() for a quick test of whether there are any items.

References gl::r.

## ◆ operator[]()

template<class Type >

Type SparseSet< Type >::operator[] | ( | Type | index | ) | const
| noexcept

Returns one of the values in the set.

Parameters

  index | the index of the value to retrieve, in the range 0 to (size() - 1).

Returns
  the value at this index, or 0 if it's out-of-range

References end(), gl::index, and gl::r.

## ◆ contains()

template<class Type >

bool SparseSet< Type >::contains | ( | Type | valueToLookFor | ) | const
| noexcept

Checks whether a particular value is in the set.

References gl::r.

## ◆ getNumRanges()

template<class Type >

int SparseSet< Type >::getNumRanges | ( |  | ) | const
| noexcept

Returns the number of contiguous blocks of values.

See also
  getRange

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::size().

## ◆ getRange()

template<class Type >

Range< Type > SparseSet< Type >::getRange | ( | int | rangeIndex | ) | const
| noexcept

Returns one of the contiguous ranges of values stored.

Parameters

  rangeIndex | the index of the range to look up, between 0 and (getNumRanges() - 1)

See also
  getTotalRange

## ◆ getTotalRange()

template<class Type >

Range< Type > SparseSet< Type >::getTotalRange | ( |  | ) | const
| noexcept

Returns the range between the lowest and highest values in the set.

See also
  getRange

References Range< ValueType >::getEnd(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getFirst(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getLast(), Range< ValueType >::getStart(), and Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::isEmpty().

Referenced by SparseSet< Type >::removeRange().

## ◆ addRange()

template<class Type >

void SparseSet< Type >::addRange | ( | Range< Type > | range | ) |

Adds a range of contiguous values to the set.

e.g. addRange (Range <int> (10, 14)) will add (10, 11, 12, 13) to the set.

References gl::a, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::add(), gl::b, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::begin(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::end(), gl::range, and SparseSet< Type >::removeRange().

Referenced by SparseSet< Type >::invertRange().

## ◆ removeRange()

template<class Type >

void SparseSet< Type >::removeRange | ( | Range< Type > | rangeToRemove | ) |

Removes a range of values from the set.

e.g. removeRange (Range<int> (10, 14)) will remove (10, 11, 12, 13) from the set.

References Range< ValueType >::contains(), Range< ValueType >::getEnd(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), Range< ValueType >::getStart(), SparseSet< Type >::getTotalRange(), Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::insert(), Range< ValueType >::isEmpty(), jassert, gl::r, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::remove(), and Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::size().

Referenced by SparseSet< Type >::addRange(), and SparseSet< Type >::invertRange().

## ◆ invertRange()

template<class Type >

void SparseSet< Type >::invertRange | ( | Range< Type > | range | ) |

Does an XOR of the values in a given range.

References SparseSet< Type >::addRange(), gl::r, gl::range, and SparseSet< Type >::removeRange().

## ◆ overlapsRange()

template<class Type >

bool SparseSet< Type >::overlapsRange | ( | Range< Type > | range | ) | const
| noexcept

Checks whether any part of a given range overlaps any part of this set.

References gl::r, and gl::range.

## ◆ containsRange()

template<class Type >

bool SparseSet< Type >::containsRange | ( | Range< Type > | range | ) | const
| noexcept

Checks whether the whole of a given range is contained within this one.

References gl::r, and gl::range.

## ◆ getRanges()

template<class Type >

const Array< Range< Type > > & SparseSet< Type >::getRanges | ( |  | ) | const
| noexcept

Returns the set as a list of ranges, which you may want to iterate over.

## ◆ operator==()

template<class Type >

bool SparseSet< Type >::operator== | ( | const SparseSet< Type > & | other | ) | const
| noexcept

## ◆ operator!=()

template<class Type >

bool SparseSet< Type >::operator!= | ( | const SparseSet< Type > & | other | ) | const
| noexcept

The documentation for this class was generated from the following file:

- juce_SparseSet.h