template<typename, typename>
class Geo::GeoKeyValueArray
A fast implementation of a set associative container, this one using a sorted array of key values to lookup a similar array of value pointers.
Requires that the key type support both operator< and operator<=. This could be removed by a small refactor of the binary search loop.
Requires that the value type be stored on the heap, as this class only stores pointers. Fixing this would require changing the class to work with iterators (to allow a sentinel value such as end() to represent a missing value).
Functions
Name | Description |
---|---|
Clear() | Removes all entries from the collection. Remember, this object did not take ownership. |
Find(const TKey &) | Find a value in the collection with TKey key. |
FindIndex(const TKey &) | Find the index of a given key. |
GetKey(s32) | Get the key at index i. |
GetSize() | Returns the number of entries in the collection. |
GetValue(s32) | Get the value at index i. |
GetValue(s32) | Get the value at index i. |
Insert(const TKey &, TValue *) | Insert an pointer to a TValue item into the container. |
operator[](s32) | Get the value at index i. |
operator[](s32) | Get the value at index i. |
Remove(const TKey &, s32 &) | Remove the entry referenced to by key. |
Remove(const TKey &) | Remove the entry referenced to by key. |
RemoveIndex(s32) | Remove the entry referenced by index obtained by FindIndex (note that all indices are of course invalidated). |
Anchor | ||||
---|---|---|---|---|
|
void Geo::GeoKeyValueArray< TKey, TValue >::Clear
...
public: void Clear()
...
Removes all entries from the collection. Remember, this object did not take ownership.
Anchor | ||||
---|---|---|---|---|
|
TValue * Geo::GeoKeyValueArray< TKey, TValue >::Find
...
public: TValue * Find
(
const TKey & key
) const
...
Find a value in the collection with TKey key.
O(logN) operation.
Returns
NULL on failure.
Anchor | ||||
---|---|---|---|---|
|
s32 Geo::GeoKeyValueArray< TKey, TValue >::FindIndex
...
public: s32 FindIndex
(
const TKey & key
) const
...
Find the index of a given key.
O(logN) operation.
Returns
-1 on failure.
Anchor | ||||
---|---|---|---|---|
|
TKey Geo::GeoKeyValueArray< TKey, TValue >::GetKey
...
public: TKey GetKey
(
s32 i
) const
...
Get the key at index i.
Anchor | ||||
---|---|---|---|---|
|
s32 Geo::GeoKeyValueArray< TKey, TValue >::GetSize
...
public: s32 GetSize() const
...
Returns the number of entries in the collection.
Anchor | ||||
---|---|---|---|---|
|
const TValue* Geo::GeoKeyValueArray< TKey, TValue >::GetValue
...
public: const TValue * GetValue
(
s32 i
) const
...
Get the value at index i.
Anchor | ||||
---|---|---|---|---|
|
TValue*& Geo::GeoKeyValueArray< TKey, TValue >::GetValue
...
public: TValue *& GetValue
(
s32 i
)
...
Get the value at index i.
Anchor | ||||
---|---|---|---|---|
|
s32 Geo::GeoKeyValueArray< TKey, TValue >::Insert
...
public: s32 Insert
(
const TKey & key,
TValue * value
)
...
Insert an pointer to a TValue item into the container.
O(logN) operation.
Returns
-1 on failure.
Anchor | ||||
---|---|---|---|---|
|
const TValue* Geo::GeoKeyValueArray< TKey, TValue >::operator[]
...
public: const TValue * operator[]
(
s32 i
) const
...
Get the value at index i.
Anchor | ||||
---|---|---|---|---|
|
TValue*& Geo::GeoKeyValueArray< TKey, TValue >::operator[]
...
public: TValue *& operator[]
(
s32 i
)
...
Get the value at index i.
Anchor | ||||
---|---|---|---|---|
|
TValue * Geo::GeoKeyValueArray< TKey, TValue >::Remove
...
public: TValue * Remove
(
const TKey & key,
s32 & removedIndex
)
...
Remove the entry referenced to by key.
removedIndex will be filled by previous index value (note that all indices are of course invalidated).
Returns
NULL if not found in collection, otherwise the value object.
Anchor | ||||
---|---|---|---|---|
|
TValue* Geo::GeoKeyValueArray< TKey, TValue >::Remove
...
public: TValue * Remove
(
const TKey & key
)
...
Remove the entry referenced to by key.
Returns
NULL if not found in collection, otherwise the value object.
Anchor | ||||
---|---|---|---|---|
|
TValue * Geo::GeoKeyValueArray< TKey, TValue >::RemoveIndex
...
public: TValue * RemoveIndex
(
s32 index
)
...
Remove the entry referenced by index obtained by FindIndex (note that all indices are of course invalidated).
Returns
NULL if not found in collection, otherwise the value object.