#pragma once #include <unordered_map> #include "Input.hpp" template<typename T = int> class InputMap { public: InputMap(const InputMap& copy) = delete; InputMap<T>& operator=(const InputMap<T>& copy) = delete; InputMap() = default; void map(const T& key, const Input& input) { _map.emplace(key, input); } void duoMap(const T& key, const Input& input1, const Input& input2) { _map.emplace(key, input1); _map.emplace(-key, input2); } const Input& get(const T& key) const { return _map.at(key); } private: std::unordered_map<T, Input> _map; };