6#ifndef ACTIVE_CONTAINER_MULTI_MAP
7#define ACTIVE_CONTAINER_MULTI_MAP
9#include "Active/Utility/Cloner.h"
10#include "Active/Utility/Mover.h"
25 template<
class Key,
class T>
requires utility::Clonable<T>
26 class MultiMap :
public std::multimap<Key, std::unique_ptr<T>> {
32 using base = std::multimap<Key, std::unique_ptr<T>>;
77 if (
this != &source) {
90 base::operator=(std::move(source));
100 auto find(
const Key& key)
const {
return base::find(key); }
122 emplace(item.first, std::move(item.second));
141 base::emplace(key, cloneMove(std::move(item)));
143 base::emplace(key, clone(item));
157 auto item = std::move(pos.second);
167 void cloneFrom(
const MultiMap& source) {
168 for (
const auto& item : source)
auto insert(const value_type &item)
Definition MultiMap.h:115
auto emplace(const Key &key, mapped_type &&item)
Definition MultiMap.h:134
typename base::const_iterator const_iterator
Container const iterator type.
Definition MultiMap.h:46
auto insert(value_type &&item)
Definition MultiMap.h:121
MultiMap(MultiMap &&source)
Definition MultiMap.h:63
auto operator=(const MultiMap &source)
Definition MultiMap.h:76
MultiMap(const MultiMap &source)
Definition MultiMap.h:58
auto insert(node_type &&node)
Definition MultiMap.h:129
auto release(iterator &pos)
Definition MultiMap.h:150
typename base::value_type value_type
Paired key/value type.
Definition MultiMap.h:38
typename base::node_type node_type
Node handle type.
Definition MultiMap.h:40
auto release(const_iterator pos)
Definition MultiMap.h:156
std::multimap< Key, std::unique_ptr< T > > base
Base container type.
Definition MultiMap.h:32
auto emplace(const Key &key, T &&item)
Definition MultiMap.h:139
virtual ~MultiMap()=default
typename base::mapped_type mapped_type
Stored type.
Definition MultiMap.h:36
typename base::iterator iterator
Container iterator type.
Definition MultiMap.h:44
MultiMap()
Definition MultiMap.h:53
typename base::size_type size_type
Container size (index) type.
Definition MultiMap.h:42
auto insert(const raw_type &item)
Definition MultiMap.h:109
auto find(const Key &key) const
Definition MultiMap.h:100
std::pair< const Key, T > raw_type
Paired key/raw value type.
Definition MultiMap.h:34
Movable concept for classes/functions dependent on cloning with a move.
Definition Mover.h:33