multimap


    template <class k, class t>
        struct multimap : public multiset<key_value<k, t>>
    {
        multimap() {}

        multimap(std::initializer_list<std::pair<k, t>> l)
        {
            for (std::pair<k, t> _t : l) insert(_t.first, _t.second);
        }

        void insert(const k& key, const t& data) { multiset<key_value<k, t>>::insert(key_value<k, t>(key, data)); }

        void erase(const k& key) { multiset<key_value<k, t>>::erase(key_value<k, t>(key)); }

        list<t> operator[](const k& key) const
        {
            list<key_value<k, t>> fl = multiset<key_value<k, t>>::find(key_value<k, t>(key));
            list<t> ret;
            for (key_value<k, t> kv : fl) ret << kv.value;
            return ret;
        }

        multimap& operator>>(const k& key) { erase(key); return *this; }

        bool contains(const k& key) { return contains(key_value<k, t>(key)); }
    };