1#ifndef BPMNOS_vector_map_H
2#define BPMNOS_vector_map_H
7#include <unordered_map>
30template<
typename Key,
typename Value>
36 size_t operator()(
const Key& vec)
const {
38 for (
const auto& elem : vec) {
39 hash ^= std::hash<typename Key::value_type>()(elem) + 0x9e3779b9 + (hash << 6) + (hash >> 2);
45 std::unordered_map<Key, Value, vector_hash> map;
49 using iterator =
typename std::unordered_map<Key, Value, vector_hash>::iterator;
50 using const_iterator =
typename std::unordered_map<Key, Value, vector_hash>::const_iterator;
51 using size_type =
typename std::unordered_map<Key, Value, vector_hash>::size_type;
105 std::pair<iterator, bool>
insert(
const std::pair<Key, Value>& value) {
106 return map.insert(value);
109 std::pair<iterator, bool>
emplace(
const Key& key,
const Value& value) {
110 return map.emplace(key,value);
118 return map.erase(key);
127 return map.count(key);
131 return map.find(key);
135 return map.find(key);
Wrapper class around std::unordered_map for maps with vector keys.
typename std::unordered_map< Key, Value, vector_hash >::const_iterator const_iterator
iterator find(const Key &key)
typename std::unordered_map< Key, Value, vector_hash >::iterator iterator
const Value & at(const Key &key) const
bool empty() const noexcept
iterator begin() noexcept
const_iterator begin() const noexcept
const_iterator end() const noexcept
Value & at(const Key &key)
std::pair< iterator, bool > emplace(const Key &key, const Value &value)
size_type size() const noexcept
const_iterator cend() const noexcept
void swap(vector_map &other) noexcept
size_type erase(const Key &key)
typename std::unordered_map< Key, Value, vector_hash >::size_type size_type
const_iterator find(const Key &key) const
size_type count(const Key &key) const
const_iterator cbegin() const noexcept
std::pair< iterator, bool > insert(const std::pair< Key, Value > &value)
Value & operator[](const Key &key)
std::variant< bool, int, double, std::string > Value