|
|
using | base = std::unordered_map<Key, std::unique_ptr<T>> |
| | Base container type.
|
| |
|
using | raw_type = std::pair<const Key, T> |
| | Paired key/raw value type.
|
| |
|
using | mapped_type = typename base::mapped_type |
| | Stored type.
|
| |
|
using | value_type = typename base::value_type |
| | Paired key/value type.
|
| |
|
using | node_type = typename base::node_type |
| | Node handle type.
|
| |
|
using | size_type = typename base::size_type |
| | Container size (index) type.
|
| |
|
using | iterator = typename base::iterator |
| | Container iterator type.
|
| |
|
using | const_iterator = typename base::const_iterator |
| | Container const iterator type.
|
| |
template<class Key, class T>
requires utility::Clonable<T>
class active::container::HashMap< Key, T >
A specialisation class for an unordered map of objects wrapped in unique_ptr paired with a key
This allows map to store objects with polymorphic behaviour and object copying (object type must conform to Clonable). Keep in mind that the normal behaviour of the map is to take ownership of any objects stored in it (unless release is used)
NB: There is no requirement for container items to be non-null. It is entirely up the implementor if this rule should be adopted or enforced