Public Types | |
typedef std::map< Key, Value > | Map |
typedef std::vector< Key > | Order |
Public Member Functions | |
OrderedMap (const OrderedMap &that) | |
bool | hasKey (const Key &key) const |
const Value & | get (const Key &key) const |
Value & | get (const Key &key) |
void | set (const Key &key, const Value &value) |
size_t | erase (const Key &key) |
Value | getAt (size_t index) const |
Value & | getAt (size_t index) |
void | setAt (size_t index, const Value &value) |
void | eraseAt (size_t index) |
size_t | size () const |
bool | empty () const |
void | clear () |
size_t | indexOf (const Key &key) const |
const Key & | getKeyAt (size_t index) const |
bool | setKeyAt (size_t index, Key newKey) |
Protected Attributes | |
Map | _map |
Order | _order |
A map-equivalent which records the insertion order of keys.
Access to values is either through key lookup (via the get() method) or through position (via the getAt() method). The set() method will replace an existing item with the same key or, if that key isn't in use yet, will add a new item & record it as the last inserted item.
This class deliberately avoids overloading the [] operator, because it could be confusing as to whether you're looking up by key or by index when your keys have an integral type.
This implementation doesn't (yet!) provide any iterators. For now, if you want to iterate over the values, use a for loop and look up items by position. Sorry.
©2021 The Foundry Visionmongers, Ltd. All Rights Reserved. |