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;
59 return map.contains(key);
109 std::pair<iterator, bool>
insert(
const std::pair<Key, Value>& value) {
110 return map.insert(value);
113 std::pair<iterator, bool>
emplace(
const Key& key,
const Value& value) {
114 return map.emplace(key,value);
118 return map.try_emplace(key,value);
126 return map.erase(key);
135 return map.count(key);
139 return map.find(key);
143 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)
bool contains(const Key &key) const
std::pair< iterator, bool > try_emplace(const Key &key, const Value &value)
Value & operator[](const Key &key)
std::variant< bool, int, double, std::string > Value