|
Nebula
|
#include <set.h>
A collection of unique values with quick lookup.
Internally implemented as a sorted array.
Adding the same value more than once has no obvious effect.
On insertion performance: Key/value pairs are inserted with the Add() method, which normally calls the Util::Array::InsertSorted() method internally. If many insertions are performed at once, it may be beneficial to call BeginBulkAdd() before, and EndBulkAdd() after adding the key/value pairs. Between BeginBulkAdd() and EndBulkAdd(), the Add() method will just append the new elements to the internal array, and only call Util::Array::Sort() inside EndBulkAdd().
Any methods which require the internal array to be sorted will throw an assertion between BeginBulkAdd() and EndBulkAdd().
Public Member Functions | |
| Set () | |
| default constructor | |
| Set (const Set< KEYTYPE > &rhs) | |
| copy constructor | |
| void | operator= (const Set< KEYTYPE > &rhs) |
| assignment operator | |
| SizeT | Size () const |
| return number of unique keys | |
| void | Clear () |
| clear the set | |
| bool | IsEmpty () const |
| return true if empty | |
| void | Reserve (SizeT numElements) |
| reserve space (useful if number of elements is known beforehand) | |
| void | Add (const KEYTYPE &value) |
| add a unique value to set, won't get added twice | |
| void | Erase (const KEYTYPE &key) |
| erase a key and its associated value | |
| void | EraseAtIndex (IndexT index) |
| erase a key at index | |
| IndexT | FindIndex (const KEYTYPE &key) const |
| find index of key pair (InvalidIndex if doesn't exist) | |
| bool | Contains (const KEYTYPE &key) const |
| return true if key exists in the array | |
| const KEYTYPE & | KeyAtIndex (IndexT index) const |
| get a key at given index | |
| const Array< KEYTYPE > & | KeysAsArray () const |
| get all keys as an Util::Array | |
| template<class RETURNTYPE> | |
| RETURNTYPE | KeysAs () const |
| get all keys as (typically) an array | |
Protected Member Functions | |
| void | SortIfDirty () const |
| make sure the key value pair array is sorted | |
Protected Attributes | |
| Array< KEYTYPE > | values |
| Util::Set< KEYTYPE >::Set | ( | ) |
default constructor
| void Util::Set< KEYTYPE >::Add | ( | const KEYTYPE & | value | ) |
add a unique value to set, won't get added twice
| void Util::Set< KEYTYPE >::Clear | ( | ) |
clear the set
| bool Util::Set< KEYTYPE >::Contains | ( | const KEYTYPE & | key | ) | const |
return true if key exists in the array
| void Util::Set< KEYTYPE >::Erase | ( | const KEYTYPE & | key | ) |
erase a key and its associated value
erase a key at index
find index of key pair (InvalidIndex if doesn't exist)
| bool Util::Set< KEYTYPE >::IsEmpty | ( | ) | const |
return true if empty
get a key at given index
| RETURNTYPE Util::Set< KEYTYPE >::KeysAs | ( | ) | const |
get all keys as (typically) an array
get all keys as an Util::Array
assignment operator
reserve space (useful if number of elements is known beforehand)
|
protected |
make sure the key value pair array is sorted