diff --git a/alib2std/src/extensions/container/map.hpp b/alib2std/src/extensions/container/map.hpp
index d8b670d5b5430b42bb3b7f4fafce3f62d3f61c99..e82cbe55616751dfb0257e92e51b19db74c84606 100644
--- a/alib2std/src/extensions/container/map.hpp
+++ b/alib2std/src/extensions/container/map.hpp
@@ -276,6 +276,54 @@ public:
 		auto beginIter = std::move ( * this ).begin ( );
 		return ext::iterator_range < decltype ( endIter ) > ( beginIter, endIter );
 	}
+
+	/**
+	 * \brief
+	 * Make range of elements with key equal to the @p key.
+	 *
+	 * \tparam K the key used in the query
+	 *
+	 * \param key the value used in the query
+	 *
+	 * \return selected range of elements
+	 */
+	template < class K >
+	auto equal_range ( K && key ) const & {
+		auto range = std::map < T, R, Cmp, Alloc >::equal_range ( std::forward < K > ( key ) );
+		return ext::iterator_range < decltype ( range.first ) > ( range.first, range.second );
+	}
+
+	/**
+	 * \brief
+	 * Make range of elements with key equal to the @p key.
+	 *
+	 * \tparam K the key used in the query
+	 *
+	 * \param key the value used in the query
+	 *
+	 * \return selected range of elements
+	 */
+	template < class K >
+	auto equal_range ( K && key ) & {
+		auto range = std::map < T, R, Cmp, Alloc >::equal_range ( std::forward < K > ( key ) );
+		return ext::iterator_range < decltype ( range.first ) > ( range.first, range.second );
+	}
+
+	/**
+	 * \brief
+	 * Make range of elements with key equal to the @p key.
+	 *
+	 * \tparam K the key used in the query
+	 *
+	 * \param key the value used in the query
+	 *
+	 * \return selected range of elements
+	 */
+	template < class K >
+	auto equal_range ( K && key ) && {
+		auto range = std::map < T, R, Cmp, Alloc >::equal_range ( std::forward < K > ( key ) );
+		return ext::make_iterator_range ( make_map_move_iterator < T, R > ( range.first ), make_map_move_iterator < T, R > ( range.second ) );
+	}
 };
 
 /**