|
|
using | base = std::multimap<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::MultiMap< Key, T >
A specialisation class for a multi-multimap of objects wrapped in unique_ptr paired with a key
This allows multi-multimap to store objects with polymorphic behaviour and object copying (object type must conform to Clonable). Keep in mind that the normal behaviour of the multi-multimap 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