#include <iostream>
#include <map>

namespace std
{
    template<typename Iter, typename = typename iterator_traits<Iter>::iterator_category>
    Iter begin(pair<Iter, Iter> const &p)
    {
        return p.first;
    }
    template<typename Iter, typename = typename iterator_traits<Iter>::iterator_category>
    Iter end(pair<Iter, Iter> const &p)
    {
        return p.second;
    }
}

int main()
{
	std::multimap<int, int> mm
	{
		{1, 1},
		{1, 2},
		{2, 1},
		{2, 2}
	};
	for(auto &v : mm.equal_range(1))
	{
		std::cout << v.first << " -> " << v.second << std::endl;
	}
}
