/// Implement a `VectorMap<T>` container class which uses a `std::vector` as backing store and has the below interface.
/// Implementation should consider correctness, readability and performance.
/// Please document your impl using comments where sensible, e.g. motivation for non-obvious desing decisions / trade-offs.
/// Prefer re-using functionality of the standard library / STL where sensible.
/// NOTE: there is no single correct solution! If you can convincingly justify your approach, than that's good!
/// Please also provide a couple of sensible unit tests verifying the correctness of your impl.
/// The tests can be either implemented using simple functions (e.g. `test_insert_multiple_values()`) containing some assert() statements
/// or using one of the popular frameworks (e.g. Catch2 or Google Test).
///
/// K type of key
/// T type of value
template <typename K, typename T>
class VectorMap
{
public:
///
/// Returns a reference to the mapped value of the element with key equivalent to key. If no such element exists, an exception of type std::out_of_range is thrown.
///
T& at( const Key& key );
///
/// Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist.
///
T& operator[]( const Key& key );
///
/// Removes the element (if one exists) with the key equivalent to key.
/// Returns: Number of elements removed (0 or 1).
///
size_type erase( const Key& key );
///
/// Checks if the container has no elements.
///
bool empty() const;
///
/// Attempts to extract ("splice") each element in source and insert it into *this using the comparison object of *this.
/// If there is an element in *this with key equivalent to the key of an element from source, then that element is not extracted from source.
///
void merge(VectorMap<K,T>& source);
private:
std::vector< /* ??? */ > elems;
};